网站建设功能要求,有限公司和股份公司区别,九度互联网站推广公司,api网站制作官方的题目解释永远晦涩难懂 这就是最大的拦路虎 简单介绍#xff0c;将二叉搜索树#xff0c;转换成“更大和树”#xff0c;“最大的和树”#xff0c;就是更新节点val#xff0c;二叉树中所有大于等于该节点的的val 总和#xff0c;包括本身 #对着图看#xff0c;会更… 官方的题目解释永远晦涩难懂 这就是最大的拦路虎 简单介绍将二叉搜索树转换成“更大和树”“最大的和树”就是更新节点val二叉树中所有大于等于该节点的的val 总和包括本身 #对着图看会更容易理解一些#二叉树是一个很好理解和掌握 递归思想的结构体。一个很好切入点可以好好总结/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*///给定一个二叉搜索树 root (BST)请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。理解为每个节点替换后的新值等于原树中所有「大于或等于该节点值」的和。class Solution {
public:TreeNode* bstToGst(TreeNode* root) {//要点巧劲//观察二叉搜索树//其实就是进行右中左遍历dfs(root, 0);return root;}// val : 以父节点为根的右子树的和包括节点int dfs(TreeNode* root, int val){if(!root){return 0;}int ans 0;ans dfs(root-right, val);ans root-val;root-val ans val;ans dfs(root-left, root-val);return ans;}
};