LeetCode 669 修剪二叉搜索树[二叉树 dfs] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 669 修剪二叉搜索树[二叉树 dfs] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
提及二叉树并且不是逐层处理,大部分都是用dfs解决,对于每个节点,为null直接返回,再看其是否在范围内,由于二叉搜索树的性质,如果不在范围内,小了,那么直接判断右子树(左子树只会更小),大了直接判断左子树(右子树只会更大),节点范围没问题,那么就判断左右子树是否有问题,更新左右子树即可,代码如下:
/**
* 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)
* ;
*/
class Solution
public:
TreeNode* trimBST(TreeNode* root, int low, int high)
if(root == nullptr) return nullptr;
// 节点不满足范围,根据搜索二叉树性质往左右子树搜索
if(root->val > high)
return trimBST(root->left, low, high);
if(root->val < low)
return trimBST(root->right, low, high);
// 更新左右子树
root->left = trimBST(root->left, low, high);
root->right = trimBST(root->right, low, high);
return root;
;
以上是关于LeetCode 669 修剪二叉搜索树[二叉树 dfs] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 669 修剪二叉搜索树[二叉树 dfs] HERODING的LeetCode之路