编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。
例如如下的先序遍历字符串:
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: 创建二叉树并计算深度相关推荐

  1. 创建二叉树并计算深度

    题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储). 例如如下的先序遍历字符串: 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. java 赋值,算术,一元操作符(翻译自Java Tutorials)
  2. 帮Facebook把用户做到7亿的那个人,告诉你如何实现用户增长
  3. 当编程语言掌握在企业手中,是生机还是危机?
  4. 系统设计说明书案例_VAV系统设计要点与案例分析
  5. java 企业号 临时素材_查看“获取临时素材文件”的源代码
  6. c语言用switch做一个计算器,求助。。关于用switch编写简易计算器
  7. echart 全国地图 下钻省、市、区
  8. 同义词替换-批量自动同义词替换软件
  9. 在IIS管理器添加网站
  10. zone在linux中的含义,linux-日常运维-firewalld的9个zone
  11. navicat连接mysql2003错误_navicat连接失败出现2003怎么办
  12. 网络上的罗刚·心灵之约
  13. 图形B=B≌B凸显中学数学有一系列重大错误(更新稿) ——合同图形概念让5000年无人能识的自然数一下子浮出水面
  14. Self-Supervised Learning of Pretext-Invariant Representation
  15. 敏捷开发产品管理系列之四:新产品研发
  16. windows10系统修改c盘user文件夹下的计算机名称
  17. 重启计算机请等待当前程序完成卸载,Win7卸载软件提示“请等待当前程序完成卸载或更改”要怎么办呢?...
  18. 松下服务器编码器由谁该信号,松下伺服电机编码器判断好坏的方法以及功能和作用...
  19. Github地址修改后,修改项目仓库地址
  20. Java同步之synchronized

热门文章

  1. android videoview按钮,Android videoview抢占焦点的处理方法
  2. c语言html文件按字符顺序读入,C语言完整笔记
  3. 刷机-把机顶盒当服务器使用
  4. 2020危险化学品经营单位主要负责人模拟考试题库及危险化学品经营单位主要负责人作业考试题库
  5. 跨境电商亚马逊 速卖通 阿里国际 shopee 运营策略与实践
  6. Centos 7桌面版取消自动休眠
  7. python计算学生年龄_用pandas快速统计学生年龄班级等分组信息
  8. Oracle Spatial
  9. 中西医结合,截断萎缩性胃炎癌变之路
  10. Eigen库学习教程(全)