递归
当前节点深度为左右孩子的最大深度 + 1
public class Solution { public int TreeDepth(TreeNode root) { if(root == null) { return 0; } return Math.max(TreeDepth(root.left), TreeDepth(root.right)) + 1; } }
非递归
层次遍历树,每一层+1
import java.util.*; public class Solution { public int TreeDepth(TreeNode root) { if(root == null) { return 0; } Queue<TreeNode> queue = new LinkedList(); int depth = 0; queue.offer(root); // 层次遍历 while(!queue.isEmpty()) { depth++; int length = queue.size(); // 出该层节点,且压入下一层 while(length-- > 0) { TreeNode node = queue.poll(); if(node.left != null) { queue.offer(node.left); } if(node.right != null) { queue.offer(node.right); } } } return depth; } }