用递归和非递归求解二叉树的深度 非递归实现 借助一个队列 public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } import java.util.Queue; import java.util.LinkedList; public class Solution { Queue<treenode> q = new LinkedList<treenode>(); public int TreeDepth(TreeNode root) { if(root==null){ return 0; } q.add(root); int level=0; while(!q.isEmpty()){ int len = q.size(); while(len-->0){ TreeNode p = q.poll(); if(p.left!=null){ q.add(p.left); } if(p.right!=null){ q.add(p.right); } } level++; } return level; } } 递归实现public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public class Solution { public int TreeDepth(TreeNode root) { if(root == null){ return 0; } int left = TreeDepth(root.left); int right = TreeDepth(root.right); return Max(left,right)+1; } public int Max(int a,int b){ return (a>b)?a:b; } }