Leetcode669.Trim a Binary Search Tree修建二叉樹
阿新 • • 發佈:2018-12-19
給定一個二叉搜尋樹,同時給定最小邊界L 和最大邊界 R。通過修剪二叉搜尋樹,使得所有節點的值在[L, R]中 (R>=L) 。你可能需要改變樹的根節點,所以結果應當返回修剪好的二叉搜尋樹的新的根節點。
錯誤的答案:
class Solution { public: TreeNode* trimBST(TreeNode* root, int L, int R) { if(root == NULL) return NULL; if(root ->val < L) { root = root ->right; trimBST(root, L, R); } else if(root ->val > R) { root = root ->left; trimBST(root, L, R); } else { root ->left = trimBST(root ->left, L, R); root ->right = trimBST(root ->right, L, R); } return root; } };
正確的答案:
class Solution { public: TreeNode* trimBST(TreeNode* root, int L, int R) { if(root == NULL) return NULL; if(root ->val < L) { root = trimBST(root ->right, L, R); } else if(root ->val > R) { root = trimBST(root ->left, L, R); } else { root ->left = trimBST(root ->left, L, R); root ->right = trimBST(root ->right, L, R); } return root; } };