3.Maximum Depth of Binary Tree
2015-10-13 20:43
302 查看
Maximum Depth of Binary Tree
leetcode上原题目为:
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.
分析:题目的意思是给定一个二叉树,求二叉树的最大深度,即根节点到叶子节点长度最大的路径上节点个数。
在实现的过程中,我采用的是递归调用的方法,类似于二叉树深度优先变量(DFS)。
首先判断输入的节点是否为空,若为空则返回深度为0;否则返回的应该是左右子树的最大深度值加1。
附我的代码如下:
整理之后
另外,完成了自己的代码之后在网上看到有人用宽度优先遍历(BFS)实现如下:
leetcode上原题目为:
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.
分析:题目的意思是给定一个二叉树,求二叉树的最大深度,即根节点到叶子节点长度最大的路径上节点个数。
在实现的过程中,我采用的是递归调用的方法,类似于二叉树深度优先变量(DFS)。
首先判断输入的节点是否为空,若为空则返回深度为0;否则返回的应该是左右子树的最大深度值加1。
附我的代码如下:
/** * 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; } int lh=0; int rh=0; lh = maxDepth(root.left); rh = maxDepth(root.right); if(lh>=rh){ return lh+1; } else{ return rh+1; } } }
整理之后
/** * 采用递归的思想做。一棵树的最大深度为其左子树和右子树中深度较大者+1. */ public int TreeDepth(TreeNode root) { if(root == null){ return 0; }else{ return Math.max(TreeDepth(root.left), TreeDepth(root.right))+1; } }
另外,完成了自己的代码之后在网上看到有人用宽度优先遍历(BFS)实现如下:
int maxDepth2(TreeNode root) { if (root == null){ return 0; } Queue<TreeNode> que = new LinkedList<TreeNode>(); int nCount = 1; int nDepth = 0;// 记录队列里面每一层上的元素 que.add(root); while(!que.isEmpty()) { TreeNode pTemp = que.poll(); nCount --; if (pTemp.left != null) que.add(pTemp.left); if (pTemp.right !=null) que.add(pTemp.right); if (nCount == 0) { nDepth ++;//记录的是同一层上的节点数 nCount = que.size();//记录的是同一层上节点个数 } } return nDepth; }
相关文章推荐
- hadoop2.6+ zookeeper3.4.6搭建
- java 策略模式
- wifi调试android 设备的方法
- openfire源码分析---1
- 二叉树前序遍历
- 仿写聊天气泡界面
- nyoj 南阳理工63小猴子下落
- javac和java -cp选项情景总结
- 数据结构 线性表
- 指针
- 堆排序
- PHP学习笔记(10)—— 浮点数与运算优先级
- SGI STL中的construct
- 神经网络&深度学习
- eclipse相关问题一:无法import项目,显示 select at list one project
- 杭电acm--1046
- 【曾经】图片快速分割
- WaitForSingleObject的用法
- 深入浅出Android App耗电量统计
- iframe父级与iframe子级间访问