浏览 3080 次
锁定老帖子 主题:C++二叉树代码实现
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2015-10-19
#include<iostream> using namespace std; struct Node { Node *left; char ch; Node *right; }; //应用前序遍历构建二叉树 , void CreateBinaryTree(Node *&T) { char ch; cin>>ch; if(ch=='#') T=NULL; else { T=new Node; if(!T) return; T->ch=ch; CreateBinaryTree(T->left); CreateBinaryTree(T->right); } } //中序遍历 口诀左根右 void travelByMid(Node*&T) { if(T) { travelByMid(T->left);//左 vist(T);//根 travelByMid(T->right);//右 } } void vist(Node *&T) { cout<<T->ch<<endl; } //从左到右遍历 void travelByPre(Node*&T) { if(T) { vist(T);//根 travelByPre(T->left);//左 travelByPre(T->right);//右 } } int getHeight(Node*&T)//求树的深度 { int l,r; if(T) { l=getHeight(T->left);//左子树的深度 r=getHeight(T->right);//右子树的深度 if(l>r) return l+1; return r+1; } return 0; } int getNodeNum(Node*&T) { if(!T) return 0; if(T->left==NULL && T->right==NULL) return 1;//如果是叶子节点,返回1 return 1+getNodeNum(T->left)+getNodeNum(T->right); //返回自身1+两边的个数 } void travelByBeh(Node*&T)//口诀左右根 { if(T) { travelByBeh(T->left); travelByBeh(T->right); vist(T); } } void main() { Node *T; CreateBinaryTree(T); cout<<getNodeNum(T)<<endl; } 大家根据上面的步骤自行操作一遍,不要只是看,重点是自己写加深熟练程度和对每一个函数方法的理解。项目开发可以来http://www.yuantuan.com/index/index/waibao 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |