新的一周>.<
6.27
leetcode 99 Recover Binary Search Tree
一颗二叉搜索树有两个节点的位置不对,让把这两个位置换回来
中序遍历的二叉搜索树是升序排列的,所以在中序遍历的时候,记录下这两个节点就好
1 class Solution{ 2 public: 3 TreeNode* p1; 4 TreeNode* p2; 5 TreeNode* pre; 6 void recoverTree(TreeNode* root){ 7 inorder(root); 8 if(p1 != NULL && p2 != NULL){ 9 swap(p1->val,p2->val); 10 } 11 } 12 13 void inorder(TreeNode* root){ 14 if(root == NULL) return; 15 if(root->left != NULL) inorder(root->left); 16 if(pre != NULL && pre->val > root->val){ 17 if(p1 == NULL){ 18 p1 = pre; 19 p2 = root; 20 } 21 else p2 = root; 22 } 23 pre = root; 24 if(root->right != NULL) inorder(root->right); 25 } 26 };
时间: 2024-11-25 23:20:07