Maximum Depth of Binary Tree --- 求二叉树的最大深度
来源:互联网 发布:天泽网络 编辑:程序博客网 时间:2024/05/16 15:13
Q:
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
给出一个二叉树,求最大深度。
A:
若该二叉树为空,则最大深度为0;
若二叉树不为空,则分别将左右子树作为根节点递归调用该方法本身,直到为空,并将深度较大的一侧子树深度值返回,即为该二叉树的最大深度。
代码如下:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public int maxDepth(TreeNode root) { if(root == null) return 0; else return (1 + Math.max(maxDepth(root.left), maxDepth(root.right))); }}
上述方法用三目运算符可表示为:
public class Solution { public int maxDepth(TreeNode root) { return root==null? 0 : Math.max(maxDepth(root.left), maxDepth(root.right))+1; }}LeetCode上的其他大神还提出了不用递归,而是使用桟来解决;我没有想到这种方法,特将代码展示如下:
public int maxDepth(TreeNode root) { int max = 0; if (root == null) {return 0;} Stack<TreeNode> path = new Stack<>(); Stack<Integer> sub = new Stack<>(); path.push(root); sub.push(1); while (!path.isEmpty()) { TreeNode temp = path.pop(); int tempVal = sub.pop(); if (temp.left == null && temp.right == null) {max = Math.max(max, tempVal);} else { if (temp.left != null) { path.push(temp.left); sub.push(tempVal + 1); } if (temp.right != null) { path.push(temp.right); sub.push(tempVal + 1); } } } return max;}
判定过程中容易忽略二叉树为空的情况,以后做题时应首先考略边界及特殊情况,避免出现问题。同时还要练习从多个方面,使用不同的方法去解决问题,拓宽自己的思维广度。
0 0
- Maximum Depth of Binary Tree 二叉树的最大深度
- Maximum Depth of Binary Tree 二叉树的最大深度
- Maximum Depth of Binary Tree 二叉树的最大深度
- Maximum Depth of Binary Tree 二叉树的最大深度
- maximum-depth-of-binary-tree(二叉树的最大深度)
- 求二叉树的最大深度 Maximum Depth of Binary Tree
- [leetcode]Maximum Depth of Binary Tree (求二叉树的最大深度 C语言)
- leetcode系列(28)Maximum Depth of Binary Tree 求二叉树的最大深度
- Maximum Depth of Binary Tree --- 求二叉树的最大深度
- 【LeetCode】Maximum Depth of Binary Tree (二叉树最大深度)
- Leetcode Maximum Depth of Binary Tree 二叉树最大深度
- LeetCode OJ-104. Maximum Depth of Binary Tree(求二叉树最大深度)
- Maximum Depth of Binary Tree--二叉树的深度
- 104. Maximum Depth of Binary Tree | 二叉树的深度
- Maximum Depth of Binary Tree 二叉树的最大深度(重)
- LeetCode OJ 之 Maximum Depth of Binary Tree (二叉树的最大深度)
- LinCode Maximum Depth of Binary Tree 二叉树的最大深度
- LeetCode 104 Maximum Depth of Binary Tree(二叉树的最大深度)
- 如何让Bootstap的轮播图片居中
- Activiti入门教程一(初步认识Activiti)
- POJ1047 Round and Round We Go【高精度】
- HDU 3794 Assign the task (时间戳dfs序线段树)
- 一张图告诉你iPhone设备、iOS系统版本、屏幕分辨率的演变
- Maximum Depth of Binary Tree --- 求二叉树的最大深度
- IOS巅峰之图片异步下载
- 第三周 项目4-顺序表应用2
- Android自定义控件
- xml
- 传销的陷阱
- JavaScript高级程序设计 第五章 — 引用类型
- Tomcat中端口占用如何处理?
- 周记(月记录)8.24-9.18