先序法建立一棵二叉树

论坛 期权论坛 期权     
匿名   2018-4-28 02:17   5239   4
题目描述:
采用先序法建立一棵二叉树,设计求该二叉树的深度,二叉树的数据域类型为字符型,扩展二叉树的叶子结点用‘#’表示,要求可以求多棵二叉树的深度,当二叉树的深度为0时程序结束。
输入样例:
A B # # C D # E # F # # G H # I K # # # #
A B D H...题目描述:
采用先序法建立一棵二叉树,设计求该二叉树的深度,二叉树的数据域类型为字符型,扩展二叉树的叶子结点用‘#’表示,要求可以求多棵二叉树的深度,当二叉树的深度为0时程序结束。
输入样例:
A B # # C D # E # F # # G H # I K # # # #
A B D H # # I # # E J # # K # # C F L # # M # # G N # # O # #
#
输出样例:
6
4
0
输入描述:
循环输入多棵扩展二叉树的先序遍历序列,每棵树占一行,以回车结束,每棵二叉树中结点之间以空格隔开
输出描述:
输出各二叉树的深度,每次输出后面都换行展开
分享到 :
0 人收藏

4 个回复

倒序浏览
2#
zzqqhh408  4级常客 | 2018-4-30 01:12:55
代码如下  最好要把它弄懂  否则就没意义了  加油!
#include
using namespace std;
struct tree
{
int data;
tree *lchild,*rchild;
};
class Ttree
{
private:
tree *root;
tree *creat(tree *bt);
public:
Ttree(){root=creat(root);}
int depth(tree *root);
int depth(){int h2;h2=depth(root);return h2;}
};
tree *Ttree::creat(tree *bt)
{
char ch;
cin>>ch;
if(ch=='#')bt=NULL;
else
{
  bt=new tree;
  bt->data=ch;
  bt->lchild=creat(bt->lchild);
  bt->rchild=creat(bt->rchild);
}
return bt;
}
int Ttree::depth(tree *bt)
{
int zuo, you,h;//分别代表 左树的层数 右树的层数  和深度
if(bt==NULL)
{

    return 0;
}
else
{
      zuo=depth(bt->lchild);
   you=depth(bt->rchild);
   h=1+(zuo>you?zuo:you);
}
return h;
}
int main()
{
int f=1;
while(f!=0)
{
Ttree b;
f=b.depth();cout
3#
热心网友  15级至尊 | 2018-4-30 01:12:56
先序法建立一棵二叉树
大个树,还用非递归,可读性不高啊。。。估计是栈出现了溢出,待我仔细阅读,然后补充。
    这个程序可读性太差了,同学帮的忙,呵呵
# include stdio.h
4#
热心网友  15级至尊 | 2018-4-30 01:12:57
先序法建立一棵二叉树
春归大地人间暖 福降神州喜临门 横批:福喜盈门
5#
A1179920872  2级吧友 | 2018-4-30 01:12:58
不懂
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:58388
帖子:6688
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP