赞
踩
- /*以二叉链表作为二叉树的存储结构:
- 完成 1:统计二叉树的叶结点个数.
- 完成 2:判别两棵树是否相等
- 完成 3:交换二叉树每个节点的左孩子和右孩子
- 4:设计二叉树的双序遍历(双序遍历就是指对于二叉树的每个节点,先访问这个节点
- ,再按双序遍历她的左子树,然后在访问这个节点,然后在按双序遍历它右子树 )
- 5:计算二叉树的最大宽度(就是所有层中结点个数最大值)
- 6:用按层次遍历二叉树的方法,统计树中度为1的节点数目
- 7:求二叉树第一条最长路径的长度,并输出次路径上个节点值
- 完成 8:输出二叉树中从每个叶子节点到根节点的路径
- */
- #include <iostream>
- using namespace std;
-
- #define MAXSIZE 100 //栈和队列中需要的长度
- //***********节点类**************
- class Tree;
- class Node
- {
- private:
- int Data;
- Node* Lchild;
- Node* Rchild;
- public:
- Node()
- {
- Lchild = NULL;
- Rchild = NULL;
- }
- int Return_Data(){return Data;} //返回数据域
- Node* Return_Lchild(){return Lchild;} //返回做孩子
- Node* Return_Rchild(){return Rchild;} //返回右孩子
- friend class Tree; //声明Node类为Tree的友元类
- };
-
- //**********Tree类***************
- class Tree
- {
- private:
- int Leaf_Numbers;
- Node* Root;
- int Front; //栈顶指针
- int Rear; //栈底指针
- Node* NodeStack[MAXSIZE];
- public:
- Tree()
- {
- Leaf_Numbers = 0;
- Root = NULL;
- Front = -1;
- Rear = 0;
- for(int i = 0; i < MAXSIZE; i++)
- {
- NodeStack[i] = NULL;
- }
- }
- //************函数**************
- void CreatTree(Node* &); //先序递归创建节点
- void TheCreatTree();
- void TraveFront(Node* ); //先序遍历
- void TheTraveFront();
- void Numbers_Leafs(Node*); //计算叶子节点数
- void TheNumbers_Leafs();
- int Return_LeafNums();
- Node* Return_Root(){return Root;} //返回树的头结点
- void ExchangeLR(Node*); //交换二叉树的左右子树
- void T
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。