递归

  • 当前节点深度为左右孩子的最大深度 + 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;
      }
    }