输入一棵二叉树,求该树的深度。 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
public class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}
}public class TreeDepth {/*** 递归版本*/public int TreeDepth(TreeNode root) {//深度优先遍历if (root==null) {return 0;}int left=TreeDepth(root.left);int right=TreeDepth(root.right);return Math.max(left, right)+1;
}/*** 非递归,层序遍历* @param args*/public int depth(TreeNode root) {if (root==null) {return 0;}Queue<TreeNode> queue=new LinkedList<>();int depth=0;queue.offer(root);while (queue.isEmpty()) {int size=queue.size();for (int i = 0; i < size; i++) {TreeNode node=queue.poll();if (node.left!=null) {queue.offer(node.left);}if (node.right!=null) {queue.offer(node.right);}}depth++;}return depth;}