二叉树的创建以及递归与非递归遍历

  

二叉树先序遍历,(1)先序访问根节点,(2)先序访问左子树(3)先序访问右子树

二叉树中序遍历,(1)中序访问根节点,(2)中序访问左子树(3)中序访问右子树

二叉树后序遍历;(1)后序访问根节点,(2)后序访问左子树(3)后序访问右子树

测试用例:int [10]={' 1 ', ' 2 ', ' 3 ', ' # ', ' # ', ' 4 ', ' # ', ' # ', ' 5 ', ' 6 '}

二叉树的创建以及递归与非递归遍历

代码:

# include   using  namespace 性传播疾病;   # include   # include   template   struct  BinaryTreeNode   {   ,,,BinaryTreeNode *, _left;   ,,,BinaryTreeNode *, _right;   ,,,T  _data;   ,,,BinaryTreeNode (const  T&, d)   ,,,,,,,:_left(空)   ,,,,,,,,_right(空)   ,,,,,,,,_data (d)   ,,,{}   };   template   class  BinaryTree   {   公众:   ,,,BinaryTree ()   ,,,,,,,:_root(空)   ,,,{}   ,,,BinaryTree (const  T *, size_t 大小,const  T&,无效)   ,,,{   ,,,,,,,size_t  index =, 0;   ,,,,,,,_root =, _Create(大小,索引,无效);   ,,,}   ,,,//BinaryTree (const  BinaryTree< T>,, d)   ,,,//{   ,,,//,,,,BinaryTreeNode, root =,空;      ,,,//}   ,,,BinaryTree,, operator =, (const  BinaryTree< T>,, d)   ,,,{   ,,,,,,,交换(根,d._root );   ,,,}   ,,,void  PrevOrder ()   ,,,{   ,,,,,,_PrevOrder (_root);   ,,,}   ,,,void 有条不紊地进行()   ,,,{   ,,,,,,_InOrder (_root);   ,,,}   ,,,size_t 尺寸()   ,,,{   ,,,,,,,_Size (_root);   ,,,}   ,,,size_t 深度()   ,,,{   ,,,,,,,return  _Depth (_root);   ,,,}   ,,,size_t  LeafSize ()   ,,,{   ,,,,,,,return  _LeafSize (, _root);   ,,,}   ,,,void  LevelOrder ()   ,,{   ,,,,,,,_LeavelOrder ();   ,,}   ,,,void  PrevOrder_NonR ()   ,,,{   ,,,,,,,_PrevOrder_NonR ();   ,,,}   ,,,void  InOrder_NonR ()   ,,,{   ,,,,,,,_InOrer_NonR ();   ,,,}   ,,,void  PostOrder_NonR ()   ,,,{   ,,,,,,,_PostOrder_NonR ();   ,,,}   公众:      保护:   ,,BinaryTreeNode *, _Create (const  T *, size_t 大小,size_t&,指数,const  T&,无效)   ,,{   ,,,,,,BinaryTreeNode, * root =,空;   ,,,,,,,(index,((指数));   ,,,,,,,,,,根→_left =, _Create(大小,+ +指数,无效);   ,,,,,,,,,,根→_right =, _Create(大小,+ +指数,无效);   ,,,,,,}   ,,,,,,return 根源;   ,,}   ,,void  _PrevOrder (BinaryTreeNode *,根)   ,,{   ,,,,,,如果(root ==, NULL)   ,,,,,,{   ,,,,,,,,,,,返回;   ,,,,,,}   ,,,,,,cout<& lt;根→_data<& lt;“,”,;   ,,,,,,_PrevOrder(根→_left );   ,,,,,,_PrevOrder(根→_right);   ,,}   ,,void  _InOrder (BinaryTreeNode *,根)   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

二叉树的创建以及递归与非递归遍历