實現**
#pragma once
#include#include #include using namespace std;
templatestruct bintreenode
};templateclass binarytree
binarytree(char *str)//根據先序字串行建立二叉樹
binarytree(binarytree&tree);
binarytree &operator=(binarytree&tree);
~binarytree()
{}public:
void preorder();//遞迴先序遍歷
void preorder_nonr();//非遞迴先序遍歷
void inorder();//遞迴中序遍歷
void inorder_nonr();//非遞迴中序遍歷
void postorder();//遞迴後序遍歷
void postorder_nonr();//非遞迴後序遍歷
void levelprint();//按層次列印
void treeprint();//按樹狀列印二叉樹
int size();//二叉樹結點個數
int depth();//二叉樹深度
private:
void _createbintree(bintreenode*& root, char *& str);
void _preorder(bintreenode*root);
void _inorder(bintreenode*root);
void _postorder(bintreenode*root);
void _levelprint(bintreenode*root);
int _size(bintreenode*root);
int _depth(bintreenode*root);
};templatevoid binarytree::_createbintree(bintreenode*& root, char *& str)
}//使用遞迴先序建立二叉樹
templatevoid binarytree::preorder()
}//使用遞迴中序建立二叉樹
templatevoid binarytree::inorder()
}//使用遞迴後序建立二叉樹
templatevoid binarytree::postorder()
}templatevoid binarytree::levelprint()
queue*> q;//借助乙個佇列實現層次列印
q.push(root);//將根結點先加入佇列中
while (!q.empty())//佇列不為空持續進行列印
if(front->_rchild != null)//有右節點則將右節點加入佇列中
}}templatevoid binarytree::preorder_nonr()
if(!stk.empty())
}coutcur = stk.top();
cout<_data<<" ";//取出棧頂元素進行訪問
stk.pop();
if(cur->_rchild)//存在右孩子則將右孩子入棧
}coutbintreenode*top = stk.top();
cur = top;
//若右孩子為空,或右子樹已經訪問過,則訪問根節點
if(cur->_rchild == null || cur->_rchild == visited)
else
} couttemplateint binarytree::_size(bintreenode*root)
//二叉樹最大深度
templateint binarytree::depth()
templateint binarytree::_depth(bintreenode*root)
測試**
#include "binarytree.hpp"
int main()
{ char *str = "124##5##36###";
binarytreebintree(str);
bintree.preorder();
bintree.inorder();
bintree.postorder();
bintree.levelprint();
cout<
C 實現二叉樹
其中的 linkstack.h 和 linkqueue 分別在 以下兩篇博文裡 linkstack linkqueue include include linkstack.h include linkqueue.h using namespace std 定義節點 templatestruct no...
二叉樹C 實現
最近整理原來的一些 腦子有點不好使,還是記下來吧。binary tree.h,遍歷包含了遞迴和非遞迴兩種,層次遍歷 ifndef binary tree h define binary tree h templatestruct binode templateclass bitree endif b...
C 二叉樹實現
二叉樹節點類 二叉樹結點類bintreenode宣告 templateclass bintreenode bintreenode getleft bintreenode getright t getdata void setleft bintreenode left void setright bi...