递归实现二叉树

对于二叉树的实现主要运用递归进行实现,代码如下:

创新互联公司专注于昌吉企业网站建设,成都响应式网站建设,商城网站开发。昌吉网站建设公司,为昌吉等地区提供建站服务。全流程按需网站设计,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务

#include <assert.h>

template<class T>

struct BinaryTreeNode

{

T _data;

BinaryTreeNode<T> *_left;

BinaryTreeNode<T> *_right;

BinaryTreeNode(const T&x)

:_data(x)

, _left(NULL)

, _right(NULL)

{}

};

template <class T>

class BinaryTree

{

protected:

BinaryTreeNode<T> *_root;

BinaryTreeNode<T> *_creattree(const T a[], size_t size, size_t &index, T invalid)

{

BinaryTreeNode<T> * root = NULL;

if (index < size && a[index] != invalid)

{

root = new BinaryTreeNode<T>(a[index]);

root->_left = _creattree(a, size, ++index, invalid);

root->_right = _creattree(a, size, ++index, invalid);

}

return root;

}

void _prevorder(const BinaryTreeNode<T> *root)

{

if (root == NULL)

return;

cout << root->_data << " ";

_prevorder(root->_left);

_prevorder(root->_right);*/

}

void _inorder(const BinaryTreeNode<T> *root)

{

if (root == NULL)

return;

_inorder(root->_left);

cout << root->_data<<" ";

_inorder(root->_right);

}

void _postorder(const BinaryTreeNode<T> *root)

{

if (root == NULL)

return;

_postorder(root->_left);

_postorder(root->_right);

cout << root->_data << " ";

}

size_t  _leafsize(const BinaryTreeNode<T> *root)

{

if (root == NULL)

return 0;

if (root->_left == NULL && root->_right == NULL)

return 1;

return _leafsize(root->_left) + _leafsize(root->_right);

}

size_t _size(const BinaryTreeNode<T> *root)

{

if (root == NULL)

return 0;

return _size(root->_left) + _size(root->_right) + 1;

}

size_t _Depth(const BinaryTreeNode<T> *root)

{

if (root == NULL)

return 0;

int left = _Depth(root->_left);

int right = _Depth(root->_right);

return left > right ? left + 1 : right + 1;

}

public:

BinaryTree(T const*a = "", size_t size = 0)

{

size_t index = 0;

_root = _creattree(a, size, index, '#');

}

void prevorder()

{

_prevorder(_root);

}

void inorder()

{

_inorder(_root);

}

void postorder()

{

_postorder(_root);

}

size_t size()

{

int count = _size(_root);

return count;

}

size_t leafsize()

{

int count = _leafsize(_root);

return count;

}

size_t Depth()

{

int depth = _Depth(_root);

return depth;

}

};

void test()

{

BinaryTree<char> b("12#3##45#6#7##8", 15);

/*b.levelorder();*/

/*BinaryTree<char> b1;

b1 = b;*/

/*cout<<b.Depth();*/

/*cout << b.size();*/

b.postorder();

/*cout << b.leafsize();*/

}

int main()

{

test();

getchar();

return 0;

}

标题名称:递归实现二叉树
文章转载:https://www.cdcxhl.com/article38/joospp.html

成都网站建设公司_创新互联,为您提供网站导航服务器托管网站维护搜索引擎优化手机网站建设小程序开发

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

手机网站建设