二叉树:二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。
题目:求二叉树的深度,从根节点到字节点的最长路径。
递归求法:
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; }
非递归:利用队列,count是当前的节点,nextcount是当前深度总的节点。【总是要遍历到当前深度的最后一个节点,深度才加1】
import java.util.LinkedList; import java.util.Queue; public int TreeDepth1(TreeNode root) { if(root==null) { return 0; } Queue<TreeNode> q=new LinkedList<TreeNode>(); q.add(root); int d=0,count=0,nextcount=q.size(); while(q.size()!=0) { TreeNode t=q.poll(); count++; if(t.left!=null) { q.add(t.left); } if(t.right!=null) { q.add(t.right); } if(count==nextcount) { d++; count=0; nextcount=q.size(); } } return d; }