当前位置:   article > 正文

c++二叉树(统计叶节点,判断两颗二叉树是否相等,交换二叉树的左孩子右孩子,输出叶子到根节点的路径)_交换二叉树左右孩子,并求最长路径

交换二叉树左右孩子,并求最长路径
  1. /*以二叉链表作为二叉树的存储结构:
  2. 完成 1:统计二叉树的叶结点个数.
  3. 完成 2:判别两棵树是否相等
  4. 完成 3:交换二叉树每个节点的左孩子和右孩子
  5. 4:设计二叉树的双序遍历(双序遍历就是指对于二叉树的每个节点,先访问这个节点
  6. ,再按双序遍历她的左子树,然后在访问这个节点,然后在按双序遍历它右子树 )
  7. 5:计算二叉树的最大宽度(就是所有层中结点个数最大值)
  8. 6:用按层次遍历二叉树的方法,统计树中度为1的节点数目
  9. 7:求二叉树第一条最长路径的长度,并输出次路径上个节点值
  10. 完成 8:输出二叉树中从每个叶子节点到根节点的路径
  11. */
  12. #include <iostream>
  13. using namespace std;
  14. #define MAXSIZE 100 //栈和队列中需要的长度
  15. //***********节点类**************
  16. class Tree;
  17. class Node
  18. {
  19. private:
  20. int Data;
  21. Node* Lchild;
  22. Node* Rchild;
  23. public:
  24. Node()
  25. {
  26. Lchild = NULL;
  27. Rchild = NULL;
  28. }
  29. int Return_Data(){return Data;} //返回数据域
  30. Node* Return_Lchild(){return Lchild;} //返回做孩子
  31. Node* Return_Rchild(){return Rchild;} //返回右孩子
  32. friend class Tree; //声明Node类为Tree的友元类
  33. };
  34. //**********Tree类***************
  35. class Tree
  36. {
  37. private:
  38. int Leaf_Numbers;
  39. Node* Root;
  40. int Front; //栈顶指针
  41. int Rear; //栈底指针
  42. Node* NodeStack[MAXSIZE];
  43. public:
  44. Tree()
  45. {
  46. Leaf_Numbers = 0;
  47. Root = NULL;
  48. Front = -1;
  49. Rear = 0;
  50. for(int i = 0; i < MAXSIZE; i++)
  51. {
  52. NodeStack[i] = NULL;
  53. }
  54. }
  55. //************函数**************
  56. void CreatTree(Node* &); //先序递归创建节点
  57. void TheCreatTree();
  58. void TraveFront(Node* ); //先序遍历
  59. void TheTraveFront();
  60. void Numbers_Leafs(Node*); //计算叶子节点数
  61. void TheNumbers_Leafs();
  62. int Return_LeafNums();
  63. Node* Return_Root(){return Root;} //返回树的头结点
  64. void ExchangeLR(Node*); //交换二叉树的左右子树
  65. void T
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/737630
推荐阅读
相关标签
  

闽ICP备14008679号