题目描述

现给定一棵树,请你求出它的高度。

输入格式

输入给出二叉树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1个英文大写字母、其左孩子结点的编号、右孩子结点的编号。如果孩子结点为空,则在相应位置上给出“-”。给出的数据间用一个空格分隔。注意:题目保证每个结点中存储的字母是不同的。

输出格式

输出树的高度。

输入样例

8
A 1 2
B 3 4
C 5 -
D - -
E 6 -
G 7 -
F - -
H - -

样例输出

4

代码

#include <bits/stdc++.h>
using namespace std;typedef char ElementType;
typedef struct TNode BTree;struct TNode{ElementType Data;int Left;int Right;
}T[101];int vis[101]; //标记根的位置 //树的构建
int BuildTree(BTree t[]){int n;cin >> n;int root;memset(vis,0,sizeof(vis));if(!n) return -1;for(int i=0; i<n; i++){char a, b, c;cin >> a >> b >> c;t[i].Data = a;if(b != '-'){t[i].Left = b - '0';vis[t[i].Left] = 1;}else t[i].Left = -1;if(c != '-'){t[i].Right = c - '0';vis[t[i].Right] = 1;}else t[i].Right = -1;}for(int i=0; i<n; i++){if(!vis[i]) root = i;}return root;}//树的高度
int GetHeight(int BT){int hl = 0, hr = 0;if(BT == -1) return 0;else{if(T[BT].Left != -1)hl = GetHeight(T[BT].Left);if(T[BT].Right!= -1) hr = GetHeight(T[BT].Right);return (hl >= hr ? hl:hr) + 1;}
}int main(){int root1 = BuildTree(T);int hight = GetHeight(root1);cout << hight << endl;return 0;
}

求树的高度(C++)相关推荐

  1. 以孩子兄弟链表为存储结构,请设计递归算法求树的高度

    题目:以孩子兄弟链表为存储结构,请设计递归算法求树的高度 分析:如果只有根节点,那么高度为1,如果有左孩子,那么高度由左孩子的左子树和右子树决定,取其大者. 代码如下: typedef struct ...

  2. java建树_JAVA实现通过中序遍历和后序遍历序列建树,并求树的高度,用层次遍历做验证...

    作为例子的树长这样: package bstpractice; import java.util.ArrayList; import java.util.Arrays; import java.uti ...

  3. 树的应用:求树的叶子节点数 求树的高度、copy一棵树

    #if 0 //树的应用 //1.求树的叶子节点: 度为0的节点 //先判断根节点是否是叶子节点,然后计算左子树的叶子节点个数 //在计算 右子树节点个数void coutLeaf(BiNode *T ...

  4. 二叉树--求树的高度

    实现思想: 1.求树高时我们可以利用递归思想来求.而递归主要的思想就是要将大问题化为小问题. 2.我们求树高时,可以分别求左右子树的高度然后比较左右子树的高度,返回较大的值. 代码实现: int ma ...

  5. 求树的遍历、树的叶子节点个数、树的高度、copy树

    1 #include<iostream> 2 3 using namespace std; 4 5 typedef struct Treenode 6 { 7 Treenode* left ...

  6. 树的高度 递归法和非递归法

    递归法思路: 树的高度即节点子树的高度+1(节点子树的高度即左子树高度,右子树高度的最大值) 代码如下: // Height_Recursive 递归法求树的高度 int Height_Recursi ...

  7. C++求tree树的高度(附完整源码)

    C++求tree树的高度 C++求tree树的高度的完整源码(定义,实现,main函数测试) C++求tree树的高度的完整源码(定义,实现,main函数测试) #include <iostre ...

  8. c++现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度

    题目描述 现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度 输入描述: 输入的第一行表示节点的个数n(1 ≤ n ≤ 1000,节点的编号为0到n-1)组 ...

  9. 语言非递归求解树的高度_算法素颜(11):无死角“盘”它!二分查找树

    引言 <菜鸟也能"种"好二叉树!>一文中提到了:为了方便查找,需要进行分层分类整理.而满足这种目标的数据结构之一就是树. 树的叶子节点可以看作是最终要搜寻的目标物:叶子 ...

最新文章

  1. glibc方式安装mysql
  2. seaborn+画图+EDA
  3. QGIS怎样设置简体中文以及新建可编辑的多边形的图层
  4. Atmel megaAVR控制器 串行引导Bootloader
  5. 导出excel 后 页面按钮失效(页面假死)
  6. 计算机能做什么英语对话,计算机英语会话∣实用电脑英语
  7. socket 和 TCP/IP 协议的关系
  8. 【SpringBoot_ANNOTATIONS】属性赋值 02 @PropertySource赋值
  9. 笔记本和android分屏,如何把Android/IOS手机或者平板作为PC电脑显示器的分屏
  10. java 根据助记词导入ETH钱包账户
  11. 牛顿冷却定律--画像时间衰减系数
  12. 计算机组装流程详解,笔记本电脑组装全过程图文详解
  13. IaaS PaaS SaaS DaaS基础设施即服务、平台即服务、软件即服务、数据即服务详解
  14. 如何使用智遥工作流为SAP节省License实例
  15. 现实版“武大郎和潘金莲”的婚姻情感纠葛
  16. 天庭云计算机键盘无法输入,Win7系统下无线键盘失灵无法输入的解决方法
  17. Chrome(谷歌浏览器) 程序开发32个经常使用插件
  18. 使用注解来开发登录检查的切面功能
  19. Java集合(一)Java集合及其关系
  20. Windows Server 2008 R2 桌面化

热门文章

  1. 怎么看燃气表中还剩多少气_怎么看燃气表中还剩多少气
  2. linux下open***的搭建以及实现内部网络的***互联(一)
  3. linux 安装jdk-7u67-linux-x64.tar.gz
  4. IDEA最实用的设置
  5. s17王者服务器维护几点,王者荣耀S17赛季更新维护结束了吗 王者荣耀更新失败怎么办...
  6. 计算WPS表格中带文本的计算表达式的结果
  7. 地理位置服务(Location Service)
  8. Android之录音功能
  9. groovy简单语法
  10. Unity拯救Blade3D客户