题目描述
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。
例如如下的先序遍历字符串:
ABC##DE#G##F###
其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再计算二叉树的深度并输出。
输入
输入有多组测试数据。
每组数据为一行字符串,长度不超过100。
输出
可能有多组测试数据,对于每组数据,
输出对应二叉树的深度。
每个输出结果占一行。
样例输入 Copy
a#b#cdef#####
a##
样例输出 Copy
6
1

#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;typedef char TElemType;
//二叉树的二叉链表存储表示
typedef struct BiTNode {TElemType data;                      //结点数据域struct BiTNode *lchild, *rchild; //左右孩子指针
} BiTNode, *BiTree;void CreateBiTree(BiTree &T)
{//按先序次序输入二叉树中结点的值(一个字符),创建二叉链表表示的二叉树TTElemType ch;//此处和教材的不同是,要处理多组数据,输入ch如果遇到EOF,应该结束程序//所以main函数用while(1)if(!(cin >> ch)) exit(0);       //用此行替换教材上的语句:cin>>ch;   实现若读入失败就退出,避免死循环。if(ch=='#')  T=NULL;else{T=new BiTNode;T->data =ch;CreateBiTree(T->lchild );CreateBiTree(T->rchild );}
}   //CreateBiTree//用算法5.5 计算二叉树的深度
int Depth(BiTree T)
{//计算二叉树T的深度if(T==NULL)return 0;else {int m=Depth(T->lchild );int n=Depth(T->rchild );if(m>n)return (m+1);else return (n+1);}
}void DestroyBitree(BiTree& T)
{if(T){DestroyBitree(T->lchild);DestroyBitree(T->rchild);free(T);}
}int main()
{BiTree tree;while(1) {CreateBiTree(tree);cout << Depth(tree);cout << endl;DestroyBitree(tree);}
}

创建二叉树并计算深度相关推荐

  1. 问题 B: 创建二叉树并计算深度

    编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储). 例如如下的先序遍历字符串: ABC##DE#G##F### 其中"#"表示的是空格,空 ...

  2. 创建二叉树并计算结点数

    题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储). 例如如下的先序遍历字符串: ABC##DE#G##F### 其中"#"表示的 ...

  3. 创建二叉树并计算结点数(通过递归调用实现)

    题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储). 例如如下的先序遍历字符串: ABC##DE#G##F### 其中"#"表示的 ...

  4. 二叉链表-创建、遍历(前序、中序、后序、非递归、层次)、复制、计算深度、结点数、销毁(C语言)

    目录 二叉树的定义 二叉树的性质 二叉链表的基本操作 二叉链表的结构定义 前序遍历创建 前序.中序.后序遍历 中序遍历的非递归算法(栈) 层次遍历(队列) 复制二叉树 计算深度 计算总结点数与叶子结点 ...

  5. 给定一棵二叉树,计算该二叉树的深度、总节点个数和叶子节点个数。

    // // binary_tree.cpp // BinaryTreeApp // // Created by ljpc on 2018/5/3. // Copyright © 2018年 ljpc. ...

  6. python创建树结构、求深度_Python实现二叉树的最小深度的两种方法

    找到给定二叉树的最小深度 最小深度是从根节点到最近叶子节点的最短路径上的节点数量 注意:叶子节点没有子树 Example: Given binary tree [3,9,20,null,null,15 ...

  7. 数据结构与算法实验 实验6:二叉树ADT的二叉链式实现 (由完全前序序列创建二叉树 / 求二叉树的节点数/树高/叶子节点数 /先序中序后序层序遍历)

    假设二叉数的数据元素为字符,采用二叉链式存储结构.请编码实现二叉树ADT,其中包括创建二叉树.遍历二叉树(深度.广度).求二叉树的深度(高度).计算二叉树的元素个数.计算二叉树的叶子数.二叉树的格式输 ...

  8. 二叉树的最小深度——递归法、迭代法

    1题目 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明:叶子节点是指没有子节点的节点. 示例 1: 输入:root = [3,9,20,null,nu ...

  9. 数据结构——二叉树的最小深度算法

    给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明:叶子节点是指没有子节点的节点. 输入:root = [3,9,20,null,null,15,7] 输 ...

最新文章

  1. JavaScript Document
  2. C# 操作Excel数据透视表
  3. 【C语言】20-static和extern关键字2-对变量的作用
  4. n 如何编写html,webpack4系列教程,如何编写plugin处理html代码逻辑?
  5. 牛客竞赛语法入门班数组栈、队列和stl习题【未完成】
  6. linux man手册_读书笔记:Linux命令行与shell脚本编程大全 第一章~第五章
  7. 18000字的SQL优化大全,收藏直接起飞!
  8. 无法推送到GitHub-一直说需要合并
  9. 设计模式的基本原则 + 类与类之间的关系
  10. JavaWeb -- Jsp 自定义标签的使用
  11. jquery easyui后台模板
  12. Python-pyautogui qq自动发送消息,微信自动发送消息,适用于任何聊天窗口
  13. JSON与JAVA数据的转换。JSONObject.fromObject()和JSONObject.toBean()
  14. 谷歌浏览器中加载Vue插件
  15. 【解决问题】RuntimeError: The size of tensor a (80) must match the size of tensor b (56) at non-singleton
  16. java俄罗斯方块旋转_java俄罗斯方块旋转算法,求解
  17. 抓取沪A股票资金流向数据
  18. 般若波罗蜜多心经-梵文(收藏)
  19. 云呐|固定资产计提折旧怎么算
  20. word隐藏段落标记,回车三角

热门文章

  1. 部分城市知名互联网公司名单(部分公司)
  2. Python 强制停止子线程
  3. python字符串成熟编码_Python——搞定烦人的字符串编码
  4. 支付宝小程序Serverless服务架构演进 | mPaaS 线下沙龙 CodeDay#1 分享实录
  5. 【做饭】论如何把肉炒硬
  6. iNFTnews | 回顾支付宝鲸探发展历程:是数藏的投机客还是引领者?
  7. cnn程序流程图_CNN 训练流程
  8. stata u7笔记
  9. Visual Studio打开VC6.0 dsw工程,转换为sln
  10. PHP中Imagick类的使用