二叉树的最大深度
2015-10-16 17:02
162 查看
问题: 给定一个二叉树,返回它的最大深度。最大深度是从根节点到最远叶子节点的距离。
1. 递归方法
简化版: 只有1行的java代码
2. 迭代方法
deque 即双端队列。
(deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。
双端队列是限定插入和删除操作在表的两端进行的线性表。这两端分别称做端点1和端点2。也可像栈一样,可以用一个铁道转轨网络来比喻双端队列。在实际使用中,还可以有输出受限的双端队列(即一个端点允许插入和删除,另一个端点只允许插入的双端队列)和输入受限的双端队列(即一个端点允许插入和删除,另一个端点只允许删除的双端队列)。而如果限定双端队列从某个端点插入的元素只能从该端点删除,则该双端队列就蜕变为两个栈底相邻的栈了。
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 lnode; int rnode; lnode=maxDepth(root.left); rnode=maxDepth(root.right); if(lnode>rnode) return lnode+1; else return rnode+1; } }
简化版: 只有1行的java代码
public class Solution { public int maxDepth(TreeNode root) { return (root == null)?0:Math.max(1+maxDepth(root.left),1+maxDepth(root.right)); } }
2. 迭代方法
public int maxDepth(TreeNode root) { if (root == null) return 0; Deque<TreeNode> stack = new LinkedList<TreeNode>();//双端队列 stack.push(root); int count = 0; while (!stack.isEmpty()) { int size = stack.size(); while (size-- > 0) { TreeNode cur = stack.pop();//后进先出 if (cur.left != null) stack.addLast(cur.left);//添加到队列尾部 if (cur.right != null) stack.addLast(cur.right); } count++; } return count; }
deque 即双端队列。
(deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。
双端队列是限定插入和删除操作在表的两端进行的线性表。这两端分别称做端点1和端点2。也可像栈一样,可以用一个铁道转轨网络来比喻双端队列。在实际使用中,还可以有输出受限的双端队列(即一个端点允许插入和删除,另一个端点只允许插入的双端队列)和输入受限的双端队列(即一个端点允许插入和删除,另一个端点只允许删除的双端队列)。而如果限定双端队列从某个端点插入的元素只能从该端点删除,则该双端队列就蜕变为两个栈底相邻的栈了。
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- C语言二叉树的非递归遍历实例分析
- 使用C语言构建基本的二叉树数据结构
- C++非递归队列实现二叉树的广度优先遍历
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- C#非递归先序遍历二叉树实例
- C++非递归建立二叉树实例
- C语言实现找出二叉树中某个值的所有路径的方法
- C++实现二叉树遍历序列的求解方法
- C语言实现二叉树遍历的迭代算法
- 用C语言判断一个二叉树是否为另一个的子结构
- C++实现二叉树非递归遍历方法实例总结
- C++二叉树结构的建立与基本操作
- 深入遍历二叉树的各种操作详解(非递归遍历)
- JavaScript数据结构和算法之二叉树详解
- java使用归并删除法删除二叉树中节点的方法
- Java中二叉树数据结构的实现示例
- python数据结构之二叉树的建立实例
- python数据结构树和二叉树简介
- python数据结构之二叉树的统计与转换实例