标签:因此 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 };
标签:因此 ret tree 所有结点 binary 这一 strong def pre
原文地址:https://www.cnblogs.com/ocpc/p/12821712.html