赞
踩
深度是指树的根节点到任一叶子节点路径上节点的数量。
最大深度是所有叶子节点的深度的最大值。
通过队列实现
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * 一层一层遍历二叉树 并存入到队列中,然后每遍历一层让count++; * @param root TreeNode类 * @return int整型 */ public int maxDepth (TreeNode root) { // write code here if(root==null){ return 0; } ArrayDeque<TreeNode> deque=new ArrayDeque<TreeNode>(); int count=0; deque.add(root); while(!deque.isEmpty()){ count++; int n=deque.size(); for(int i=0;i<n;i++){ //遍历当前层,把下一层加入到队列中 TreeNode treeNode=deque.poll(); if(treeNode.left!=null){ deque.add(treeNode.left); } if(treeNode.right!=null){ deque.add(treeNode.right); } } } return count; } }
通过两个栈实现,同时出栈,同时入栈。
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * 搭配两个栈实现,一个栈存节点、一个栈存当前节点的所在层数 * * @param root TreeNode类 * @return int整型 */ public int maxDepth (TreeNode root) { // write code here if(root==null) return 0; Stack<TreeNode> stackNode=new Stack<TreeNode>(); Stack<Integer> stackCount=new Stack<Integer>(); stackNode.push(root); stackCount.push(1); int max=0; while(!stackNode.isEmpty()){ int temp=stackCount.pop(); TreeNode tree=stackNode.pop(); //一直取最后存入的,即先完成一个分支的深度遍历 if(temp>max){ max=temp; //保证max存入的一直是最大的层数深度 } if(tree.left!=null){ stackNode.push(tree.left); stackCount.push(temp+1); } if(tree.right!=null){ stackNode.push(tree.right); stackCount.push(temp+1); } } return max; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。