算法-----------计算二叉树的最大深度
题目:
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:
给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \15 7
返回它的最大深度 3 。
解决方法一:
public static int maxDepth(TreeNode root) {if (root == null) {return 0;}int depthLeft = 0,depthRight = 0;//左孩子if (root.left != null) {depthLeft = maxDepth(root.left);}//右孩子if (root.right != null) {depthRight = maxDepth(root.right);}// 加上自己的这一级别return 1 + Math.max(depthLeft,depthRight);}
解决方法二:
public static int maxDepth2(TreeNode root) {if (root == null) {return 0;}LinkedList<Pair<TreeNode,Integer>> stack = new LinkedList<>();stack.offer(new Pair<>(root,1));int maxDep = 1;while (!stack.isEmpty()) {Pair<TreeNode, Integer> treeNodeIntegerPair = stack.pollLast();TreeNode key = treeNodeIntegerPair.getKey();Integer value = treeNodeIntegerPair.getValue();maxDep = Math.max(value,maxDep);if (key.left != null) {stack.offer(new Pair<>(key.left,value + 1));}if (key.right != null) {stack.offer(new Pair<>(key.right,value + 1));}}return maxDep;}
算法-----------计算二叉树的最大深度相关推荐
- 【每日一算法】二叉树的最大深度
微信改版,加星标不迷路! 每日一算法-二叉树的最大深度 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径 ...
- 设树采用孩子兄弟表示法存放.用类c语言设计算法计算树的高度.,(数据结构课程设计分类题目.doc...
(数据结构课程设计分类题目 线性表 顺序表: 1.设有一元素为整数的线性表L=(a1,a2,a3,-,an),存放在一维数组A[N]中,设计一个算法,以表中an作为参考元素,将该表分为左.右两部分,其 ...
- 计算二叉树的深度和宽度
计算二叉树的最大深度和最大宽度 #include<stdio.h> #include<stdlib.h> #include<string.h> #define Ma ...
- 算法【二叉树】学习笔记 - 已知结点数计算可构建出多少种二叉树
算法[二叉树]学习笔记 - 已知结点数计算可构建出多少种二叉树 卡特兰数 相关知识点 排列组合公式 排列 Arrangement 组合 Combination 分步计算 简化 参考资料 题目:已知3个 ...
- 二叉树常见算法题(单值二叉树、二叉树的最大深度、反转二叉树、判断两颗二叉树是否相同、对称二叉树、一颗二叉树是否是另一颗二叉树的子树)
这里的代码都是递归实现的,再强调下二叉树的概念,二叉树的构成有两种情况: 1.空树 2.根节点 + 左子树 + 右子树(这里的左子树和右子树又是一颗二叉树) 可以看出二叉树就是递归定义的,下面的算法题 ...
- 二叉树遍历算法的应用——计算二叉树的深度、计算二叉树的节点总数、计算二叉树的叶子节点数(均采用递归的思想)
//二叉树遍历算法的应用 //1.计算二叉树的深度 int Depth(BitTree T){if(T==NULL)return 0;//如果是空树,返回0else{m=Depth(T->lch ...
- 计算二叉树深度算法(递归、非递归)入门详解
一.引言 二叉树在应用时,经常需要知道二叉树的深度.二叉树的深度就是二叉树的层数,即从树根算起,到最底下一层的层数是多少,即二叉树中结点的最大层次值. 本文给出了计算二叉树深度的算法,包括递归算法和非 ...
- 常考数据结构与算法:二叉树的最大深度
题目描述 求给定二叉树的最大深度, 最大深度是指树的根结点到最远叶子结点的最长路径上结点的数量. class TreeNode {int val;TreeNode left;TreeNode righ ...
- 算法_二叉树_二叉树的最大深度
文章目录 二叉树的最大深度 1.两种解法 递归法--后序遍历 迭代法--层序遍历 2.总结 推荐题目 二叉树的最大深度 leetcode链接 1.两种解法 递归法–后序遍历 采用后序遍历,先处理左孩子 ...
最新文章
- Machine Learning——DAY1
- R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、在双因素方差分析中,受试者被分配到由两个因素交叉分类形成的组(Two-way factorial ANOVA)
- 学Android开发 这19个开发工具助你顺风顺水
- JSP标准标签库JSTL总结
- React开发(174):ant design按钮确认删除
- kido机器人没反应_机器人不能钩的三个英雄,章鱼妈上榜,钩中图四我方直接团灭!...
- Cisco路由器 VOIP 配置
- 离线安装NLTK工具包
- 耿丹16-1第一次作业
- android java程序中调用shell命令
- 人体识别_你知道人脸识别,但你知道人体识别吗?ReID技术了解一下!
- 超威主板关闭超线程教程
- sys matlab,matlab中sys什么意思
- Android使用有道翻译API实现在线翻译功能
- python程序设计,猜数游戏编程实践课程实验
- 必看!“隐形贫困人口”重疾险排名及投保建议
- Paper reading (九十一):Bifidobacterium breve Bif195 Protects Against Small-Intestinal Damage
- 单元节点和积分点有什么区别
- ubuntu下播放wav视频和mp3音频文件
- 记一次IOS与H5-SPA页面的交互经验
热门文章
- 打开 计算机 找不到桌面图标,电脑启动后桌面图标不见了怎么办 不显示图标解决办法...
- python处理视频动漫化_用Python实现抖音上的“人像动漫化”特效,原来这么简单...
- svd协同过滤java实现_利用 SVD 实现协同过滤推荐算法
- python经典题库和答案_吐血总结,Python经典面试题及答案
- GetWindowRect和GetClientRect的区别详解
- 串口调试助手c语言程序,串口调试助手C语言源程序
- socket通信时如何判断当前连接是否断开--select函数,心跳线程,QsocketNotifier监控socket...
- Python自动化开发学习13-堡垒机开发
- 死而复生?RethinkDB宣布进入Linux基金会!
- [20160910]低级错误.txt