题目描述

已知一棵二叉树用邻接表结构存储,求这棵树的高度。例:如图二叉树的数据文件的数据格式如下:

输入

第一行n为二叉树的结点个树,n≤100;以下第一列数据是各结点的值,第二列数据是左儿子结点编号,第三列数据是右儿子结点编号。

样例输入

7
5 2 3
12 4 5
10 0 0
29 0 0
15 6 7
8 0 0
23 0 0

样例输出

4

题目分析

首先,我们从题目给的输入开始分析。首先输入一个数字,如例中的“7”,表示这棵树总共的节点数。再每次输入三个数字,如例中的“5 2 3”,“12 4 5”等,三个数字中,第一个数,表示节点的数值,后面两个数,分别表示左子叶和右子叶的编号(注意:这里并不是数值,而是编号!)。

因此,由题中所给的数据,完整的代码如下

#include<bits/stdc++.h>
using namespace std;
struct Node{int data;int left,right;
}BTree[100];int getBTree(int root){if(root == 0){return 0;}int getL = getBTree(BTree[root].left );int getR = getBTree(BTree[root].right );return max(getL,getR)+1;
}int main(){int n,i;cin>>n;for(i=1;i<=n;i++){cin>>BTree[i].data >>BTree[i].left >>BTree[i].right ;}cout<<getBTree(1);
}

问题 D: 二叉树求高度相关推荐

  1. 2021-10-09 求二叉树的高度(递归和迭代版本)

    剑指 Offer 55 - I. 二叉树的深度 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度. 和题解写的一比,我写的 ...

  2. 树:求二叉树的高度和叶子结点数量

    算法代码很简单都是用使用递归计算,大家把递归思想领悟到就ok了. 二叉树高度算法 //求二叉树的高度 采用递归的方式 void GetHeight(BiTree tree, int* heightNu ...

  3. 49 - 算法 - LeetCode 110 平衡二叉树 - 求二叉树的高度 -双重递归

    // 求二叉树的高度函数 nullptr为0 然后累加 +1 return left-right // 结论都还是递归 当前状态 多加了一个递归求高度 双重递归 class Solution {pub ...

  4. 二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)

    要求:以左右孩子表示法实现链式方式存储的二叉树(lson-rson),以菜单方式设计并完成功能任务:建立并存储树.输出前序遍历结果.输出中序遍历结果.输出后序遍历结果.交换左右子树.统计高度,其中对于 ...

  5. 数据结构与算法 3:二叉树,遍历,创建,释放,拷贝,求高度,面试,线索树

    [本文谢绝转载,原文来自http://990487026.blog.51cto.com] 树 数据结构与算法 3:二叉树,遍历,创建,释放,拷贝,求高度,面试,线索树二叉树的创建,关系建立二叉树的创建 ...

  6. 【数据结构】 实验报告10 顺序、链式存储结构的二叉树递归遍历、层次遍历求高度

    一.实验目的和要求 (源码在最后) 要求: 两种及以上存储结构(建议 顺序存储结构和链式存储结构各一).两种及以上方法(建议 递归遍历和层次遍历方法各一).分析各代码性能. 抽象数据类型(二叉树)独立 ...

  7. 图解二叉树节点的查找,插入和删除操作,求高度等等运算集合

    首先这三种操作都是基于二叉查找树所进行的操作,因此开始之前应该建立二叉查找树. 查找和插入由于比较好理解,直接看代码吧. 查找和插入://这个部分参考胡昭民编著清华出版的数据结构,有所改动. #inc ...

  8. 剑指offer之二叉树的高度

    1 问题 求二叉树的深度,比如下面的二叉树,高度是4 22 13 3 2 53 2 代码实现 int getTreeHeigh(Node *haed) {if (head == NULLL){retu ...

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

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

最新文章

  1. 新转机!2020年想裸辞的程序员们注意了
  2. 模拟手机浏览器_干货系列,让浏览器自己动起来,解放双手
  3. android 使用AIDL实现进程间通讯
  4. VC 6中使用不同调用规范的函数在符号文件里的表示方式
  5. lua table insert_超详细的sysbench oltp-数据库性能测试中lua脚本解剖
  6. LeetCode算法题-Number Complement(Java实现-五种解法)
  7. Effective Objective-C 的读书笔记
  8. 错题集--大一C语言选择题
  9. 【02】Java进阶:17-单例设计模式、多例设计模式、枚举、工厂设计模式、Lombok
  10. C++11的模板类型判断——std::is_same和std::decay
  11. ioi 赛制_如何评价 IOI 2017(国际信息学奥林匹克竞赛)?
  12. 获取当前 IE 地址栏中的 URL
  13. Modbus Tcp服务端使用说明书
  14. 屠蛟之路_重伤的屠蛟俊_ThirdDay
  15. 【汇正财经】证券市场的基本功能有哪些?
  16. 计算机上播放时没声音什么故障,电脑经常在播放电影(音乐等)时突然没有声音...
  17. VOLTE学习笔记(一)——VOLTE网络结构
  18. 图算法入门4:活动网络-AOE网络和关键路径(critical path)
  19. Unity 工具类 之 Excel 转换为 json、csv、xml、lua格式
  20. Oracle执行计划。RBO优化器和CBO优化器。TABLE ACCESS FULL,TABLE ACCESS BY INDEX ROWID,TABLE ACCESS BY INDEX SCAN

热门文章

  1. Visual Studio 2017 RC3支持.NET Core,延迟对Python的支持
  2. 先定个小目标, 使用C# 开发的千万级应用
  3. 将WebApiTestClient添加到ASP.NET Web API帮助页面
  4. 【QGIS入门实战精品教程】2.2:QGIS软件的下载与安装(Windows)
  5. 【ArcGIS遇上Python】ArcGIS Python实现Modis NDVI批量求年最大值
  6. linux(windows)之svn重定向地址
  7. Android插件化开发之动态加载技术系列索引
  8. COMA(二):Counterfactual Multi-Agent Policy Gradients 论文讲解
  9. html三列布局源码,HTML三列布局 - 黄柳淞的个人页面 - OSCHINA - 中文开源技术交流社区...
  10. Linux怎么查询全部容器时间,linuxea:如何单单修改docker容器的系统时间