LeetCode 099 恢復二叉搜尋樹

2021-10-14 15:23:15 字數 884 閱讀 7035

這個方法是遞迴方式的中序遍歷的變式

因為二叉搜尋樹的中序遍歷一定是從小到大的

通過分析題目所說的錯誤的二叉樹的中序遍歷我們可以知道

需要交換的兩個節點是

原始的中序遍歷

private

void

inorder

(treenode root)

// 左根右的順序遍歷

inorder

(root.left)

; system.out.

println

("遍歷根節點");

inorder

(root.right)

;}

現在只需要在遍歷根節點的地方做修改,將上述說的兩個節點找出來然後交換值即可

class

solution

recover

(root)

;swap()

;}private

void

swap()

private

void

recover

(treenode root)

recover

(root.left);if

(temp == null)

else

if(first != null && temp.val >= root.val)

temp = root;

// 更新當前遍歷的節點

}recover

(root.right);}

}

LeetCode 恢復二叉搜尋樹

二叉搜尋樹中的兩個節點被錯誤地交換。請在不改變其結構的情況下,恢復這棵樹。示例 1 輸入 1,3,null,null,2 1 3 2輸出 3,1,null,null,2 3 1 2示例 2 輸入 3,1,4,null,null,2 3 1 4 2 輸出 2,1,4,null,null,3 2 1 4...

LeetCode99 20 8 8 恢復二叉搜尋樹

題目鏈結 leetcode99 分析 看了題解做的,一開始想遍歷樹找到不符合的乙個節點並在樹中再次遍歷找另乙個,後來發現是一團糟。看了題解之後發現只要利用bst中序遍歷是有序的特點就能思路清晰的做。如題解所說,有三種解法,時間複雜度都是o n 空間複雜度分別是o n o h o 1 三者都利用了二叉...

leetcode 99 恢復二叉搜尋樹(二叉樹)

二叉搜尋樹中的兩個節點被錯誤地交換。請在不改變其結構的情況下,恢復這棵樹。示例 1 輸入 1,3,null,null,2 1 3 2 輸出 3,1,null,null,2 3 1 2 示例 2 輸入 3,1,4,null,null,2 3 1 4 2輸出 2,1,4,null,null,3 2 1 ...