给定一颗二叉树,从右侧中序遍历,然后不断的加和就可以了。
一次ac
void converBSTImpl(TreeNode* root, int& value)
{
if (root)
{
if (root->right)
{
converBSTImpl(root->right, value);
}
value = value + root->val;
root->val = value ;
if (root->left)
{
converBSTImpl(root->left, value);
}
}
}
// 538. Convert BST to Greater Tree
TreeNode* Solution::convertBST(TreeNode* root)
{
int max = 0;
if (root)
{
converBSTImpl(root, max);
}
return root;
}
Runtime: 44 ms, faster than 97.20% of C++ online submissions for Convert BST to Greater Tree.
Memory Usage: 23.5 MB, less than 100.00% of C++ online submissions for Convert BST to Greater Tree.
本文介绍了一种通过右中序遍历将二叉搜索树(BST)转换为累加大树的方法,并提供了一段AC代码实现。该算法首先访问二叉树的右侧子节点,然后更新当前节点值为路径上所有节点值之和,最后访问左侧子节点。
836

被折叠的 条评论
为什么被折叠?



