递归修剪二叉树的理解
来源:互联网 发布:手机熊猫抢福袋软件 编辑:程序博客网 时间:2024/06/08 18:44
eg: Given a binary search tree and the lowest and highest boundaries as L and R, trim the tree so that all its elements lies in [L, R] (R >= L). You might need to change the root of the tree, so the result should return the new root of the trimmed binary search tree.
Example 1:
Input:
1
/ \
0 2
L = 1
R = 2
Output:
1
\
2
Example 2:
Input:
3
/ \
0 4
\
2
/
1
L = 1
R = 3
Output:
3
/
2
/
1
修剪一个二叉树:给定一个二叉树的最大和最小边界L和R,使树中的元素位于L和R之间。
当root位于L和R之间时,递归的修剪其左右子树,并返回root。
当root的值小于L,其左子树都小于L,故舍弃其左子树,递归的修剪其右子树,并返回修剪过的右子树。
当root的值大于R,其右子树都大于R,故舍弃其右子树,递归的修剪其左子树,并返回修剪过的左子树。
复制代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* trimBST(TreeNode* root, int L, int R) {
if (root == nullptr)
return 0;
if (root->val < L)
return trimBST(root->right, L, R);
else if (root->val > R)
return trimBST(root->left, L, R);
else {
root->left = trimBST(root->left, L, R);
root->right = trimBST(root->right, L, R);
return root;
}
}
};
- 递归修剪二叉树的理解
- 二叉树的递归实现理解
- 通过二叉树的遍历理解递归
- 二叉树中的递归理解
- [数据结构]对三序非递归遍历二叉树的理解
- 先序遍历二叉树的递归算法怎样理解
- 一段代码让你理解二叉树的递归奥秘
- 汉诺塔递归用二叉树更好的理解
- 先序遍历二叉树的递归算法怎样理解
- 递归的理解 腾讯笔试题 二叉树
- 深入理解二叉树的非递归遍历
- 二叉树遍历理解——递归及非递归方法中栈的利用
- leetcode Trim a Binary Search Tree 修剪二叉搜索树
- 二叉树的递归,非递归遍历
- 二叉树的递归+非递归遍历
- 二叉树的递归与非递归
- 二叉树的递归非递归遍历
- 二叉树的遍历--递归+非递归
- opencv——轮廓检测与画轨迹条
- adb命令获取手机截屏图片
- Java之多线程基础
- 两数的最大公约数和最小公倍数
- DeepMind发布最新原始音频波形深度生成模型WaveNet,将为TTS带来无数可能
- 递归修剪二叉树的理解
- 2017-12-16 杂记
- 第21节项目1-投票表决器
- Android Studio 常用快捷键分类整理
- codeforces 339A Helpful Maths
- c++实现表达式计算问题
- Ubuntu16.04学习总结
- 数据结构总结之dfs
- 198. House Robber