第五周 Leetcode 99. Recover Binary Search Tree (HARD)
生活随笔
收集整理的這篇文章主要介紹了
第五周 Leetcode 99. Recover Binary Search Tree (HARD)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Leetcode99?給定一個 二叉搜索樹,其中兩個節(jié)點被交換,寫一個程序恢復(fù)這顆BST.
只想到了時間復(fù)雜度O(n)空間復(fù)雜度O(h) h為樹高的解法,還沒想到空間O(1)的解法。
交換的情況只有兩種,
case1 兩個節(jié)點在樹中(中序遍歷序列)相鄰,
case2?兩個節(jié)點在樹中(中序遍歷序列)不相鄰。
只要三個指針 Pre first second 即可記錄兩種case
class Solution { public: TreeNode *first; TreeNode *second; TreeNode *pre; void inOrder(TreeNode *root){ if (root==NULL) return; inOrder(root->left); if (pre == NULL){pre = root;} else { if (pre->val > root->val){ if (first==NULL) {first = pre;} second = root; } pre = root; } inOrder(root->right); } void recoverTree(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function pre = NULL; first = NULL; second= NULL; inOrder(root); int val; val = first->val; first->val=second->val; second->val=val; return; } };
轉(zhuǎn)載于:https://www.cnblogs.com/heisenberg-/p/6596332.html
總結(jié)
以上是生活随笔為你收集整理的第五周 Leetcode 99. Recover Binary Search Tree (HARD)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建行龙卡优享信用卡未激活会收年费吗?有什
- 下一篇: 交换两个整形变量的数值