算法-树-之二叉树的深度

算法-树-之二叉树的深度

 

 

 分析和思路:

这道题主要还是递归思想的理解和应用,还有就是在判断左右子树的的大小的时候,需要进行比较,返回较大值,这也属于递归的一部分,但是这个过程有点绕。递归思想在很多算法题里面有体现,需要深刻体会。

 1 /*
 2 struct TreeNode {
 3     int val;
 4     struct TreeNode *left;
 5     struct TreeNode *right;
 6     TreeNode(int x) :
 7             val(x), left(NULL), right(NULL) {
 8     }
 9 };*/
10 
11 
12 int GetTheDepthofTheTree(TreeNode* root,int heght)
13 {
14     int a, b;
15     if (root == NULL)
16     {
17         return heght;
18     }
19     heght++;
20     a=GetTheDepthofTheTree(root->left, heght);
21     b=GetTheDepthofTheTree(root->right, heght);
22     if (a > b)
23     return a;
24     else
25         return b;
26     
27 
28 }
29 
30 class Solution {
31 public:
32     int TreeDepth(TreeNode* pRoot) {
33         if(pRoot==NULL)
34         {
35             return 0;
36         }
37         
38     int depth = 0;
39     int left = 0; int right =0;
40     left=GetTheDepthofTheTree(pRoot->left,depth);
41     right=GetTheDepthofTheTree(pRoot->right, depth);
42    if(left>right)
43             return left+1;
44      else
45         return right+1;
46     
47     }
48 };

 

上一篇:leecode 530. 二叉搜索树的最小绝对差


下一篇:ES常用操作