题目如下,题意很简单:求二叉树的深度
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. Note: A leaf is a node with no children. Example: Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 return its depth = 3.
分析:
教材习题之一。
我的想法是:1.把树分为两个左右大子树。
· 2.左子树中再分左右子树,右子树同理。
3.递归下去直到各自的叶结点,每分一层,深度+1
4.分别求出左,右大子树各自的深度,谁大返回谁+1。(算上根节点)
照这个思路,不难写出一个递归方法。
代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ int maxDepth(struct TreeNode* root) { int lc,rc; //左右深度计数 if(!root) return 0; lc=maxDepth(root->left); rc=maxDepth(root->right); if(lc>=rc) return lc+1; else return rc+1; }
值得一提的是,这种方法恰好也是DFS(深度优先搜索)的一种实现。