问题 B: 创建二叉树并计算深度
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。
例如如下的先序遍历字符串:
ABC##DE#G##F###
其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再计算二叉树的深度并输出。
代码如下:
#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)
{
//按先序次序输入二叉树中结点的值(一个字符),创建二叉链表表示的二叉树T
TElemType 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)return 0;
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)return;
DestroyBitree(T->lchild);
DestroyBitree(T->rchild);
delete T;
/***********************************/
}
int main()
{
BiTree tree;
while(1) {
CreateBiTree(tree);
cout << Depth(tree);
cout << endl;
DestroyBitree(tree);
}
}
问题 B: 创建二叉树并计算深度相关推荐
- 创建二叉树并计算深度
题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储). 例如如下的先序遍历字符串: ABC##DE#G##F### 其中"#"表示的 ...
- 创建二叉树并计算结点数
题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储). 例如如下的先序遍历字符串: ABC##DE#G##F### 其中"#"表示的 ...
- 创建二叉树并计算结点数(通过递归调用实现)
题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储). 例如如下的先序遍历字符串: ABC##DE#G##F### 其中"#"表示的 ...
- 二叉链表-创建、遍历(前序、中序、后序、非递归、层次)、复制、计算深度、结点数、销毁(C语言)
目录 二叉树的定义 二叉树的性质 二叉链表的基本操作 二叉链表的结构定义 前序遍历创建 前序.中序.后序遍历 中序遍历的非递归算法(栈) 层次遍历(队列) 复制二叉树 计算深度 计算总结点数与叶子结点 ...
- 给定一棵二叉树,计算该二叉树的深度、总节点个数和叶子节点个数。
// // binary_tree.cpp // BinaryTreeApp // // Created by ljpc on 2018/5/3. // Copyright © 2018年 ljpc. ...
- python创建树结构、求深度_Python实现二叉树的最小深度的两种方法
找到给定二叉树的最小深度 最小深度是从根节点到最近叶子节点的最短路径上的节点数量 注意:叶子节点没有子树 Example: Given binary tree [3,9,20,null,null,15 ...
- 数据结构与算法实验 实验6:二叉树ADT的二叉链式实现 (由完全前序序列创建二叉树 / 求二叉树的节点数/树高/叶子节点数 /先序中序后序层序遍历)
假设二叉数的数据元素为字符,采用二叉链式存储结构.请编码实现二叉树ADT,其中包括创建二叉树.遍历二叉树(深度.广度).求二叉树的深度(高度).计算二叉树的元素个数.计算二叉树的叶子数.二叉树的格式输 ...
- 二叉树的最小深度——递归法、迭代法
1题目 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明:叶子节点是指没有子节点的节点. 示例 1: 输入:root = [3,9,20,null,nu ...
- 数据结构——二叉树的最小深度算法
给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明:叶子节点是指没有子节点的节点. 输入:root = [3,9,20,null,null,15,7] 输 ...
最新文章
- java 赋值,算术,一元操作符(翻译自Java Tutorials)
- 帮Facebook把用户做到7亿的那个人,告诉你如何实现用户增长
- 当编程语言掌握在企业手中,是生机还是危机?
- 系统设计说明书案例_VAV系统设计要点与案例分析
- java 企业号 临时素材_查看“获取临时素材文件”的源代码
- c语言用switch做一个计算器,求助。。关于用switch编写简易计算器
- echart 全国地图 下钻省、市、区
- 同义词替换-批量自动同义词替换软件
- 在IIS管理器添加网站
- zone在linux中的含义,linux-日常运维-firewalld的9个zone
- navicat连接mysql2003错误_navicat连接失败出现2003怎么办
- 网络上的罗刚·心灵之约
- 图形B=B≌B凸显中学数学有一系列重大错误(更新稿) ——合同图形概念让5000年无人能识的自然数一下子浮出水面
- Self-Supervised Learning of Pretext-Invariant Representation
- 敏捷开发产品管理系列之四:新产品研发
- windows10系统修改c盘user文件夹下的计算机名称
- 重启计算机请等待当前程序完成卸载,Win7卸载软件提示“请等待当前程序完成卸载或更改”要怎么办呢?...
- 松下服务器编码器由谁该信号,松下伺服电机编码器判断好坏的方法以及功能和作用...
- Github地址修改后,修改项目仓库地址
- Java同步之synchronized