中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

遞歸實現二叉樹

發布時間:2020-05-21 20:05:38 來源:網絡 閱讀:279 作者:走走停停吧 欄目:編程語言

對于二叉樹的實現主要運用遞歸進行實現,代碼如下:

#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;

}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

双柏县| 吴川市| 繁峙县| 长汀县| 秦安县| 浑源县| 垣曲县| 北京市| 皮山县| 华宁县| 泽普县| 仁化县| 龙南县| 安新县| 勐海县| 永安市| 区。| 永顺县| 伊金霍洛旗| 福州市| 清原| 余姚市| 张家界市| 遵化市| 甘南县| 临武县| 萨迦县| 大同市| 雅江县| 龙海市| 泌阳县| 南昌市| 旺苍县| 洛阳市| 扬中市| 灌云县| 襄垣县| 商洛市| 得荣县| 英山县| 永济市|