码迷,mamicode.com
首页 > 其他好文 > 详细

【树】563. 二叉树的坡度

时间:2020-05-03 14:53:40      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:因此   ret   tree   所有结点   binary   这一   strong   def   pre   

题目:

技术图片

 

解法:

方法:递归

算法:

从问题的描述中,可以清楚地了解到,我们需要在给定树的每个结点处找到其坡度,并将所有的坡度相加以获得最终结果。要找出任意结点的坡度,我们需要求出该结点的左子树上所有结点和以及其右子树上全部结点和的差值。

因此,为了找出解决方案,我们使用递归函数 traverse,在任何结点调用该函数,都会返回当前结点下面(包括其自身)的结点和。借助于任何结点的左右子结点的这一和值,我们可以直接获得该结点所对应的坡度。

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     
13     int tilt=0;
14     int findTilt(TreeNode *root) 
15     {
16         traverse(root);
17         return tilt;
18     }
19     
20     int traverse(TreeNode *root)
21     {
22         if(root == NULL)
23         {
24             return 0;
25         }
26         int left=traverse(root->left);
27         int right=traverse(root->right);
28 
29         tilt+=std::abs(left-right);
30         
31         return left+right+root->val;
32     }
33 };

 

【树】563. 二叉树的坡度

标签:因此   ret   tree   所有结点   binary   这一   strong   def   pre   

原文地址:https://www.cnblogs.com/ocpc/p/12821712.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!