二叉搜尋樹中的兩個節點被錯誤地交換。
請在不改變其結構的情況下,恢復這棵樹。
示例 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
/3
高階:
使用 o(n) 空間複雜度的解法很容易實現。o(n)空間複雜度演算法:你能想出乙個只使用常數空間的解決方案嗎?
/**
* definition for a binary tree node.
* public class treenode
* treenode(int val)
* treenode(int val, treenode left, treenode right)
* }*/class
solution
public
void
checktree
(treenode root,
int x,
int y)
checktree
(root.right,x,y);}
public
int[
]findorder
(arraylist
array)
i++;}
if(flag==1)
if(flag==2)
return ans;
}public
void
midfs
(treenode root,arraylist
array)
}
99 恢復二叉搜尋樹
二叉搜尋樹中的兩個節點被錯誤地交換。請在不改變其結構的情況下,恢復這棵樹。示例 2 輸入 3,1,4,null,null,2 3 1 4 2輸出 2,1,4,null,null,3 2 1 4 3高階 使用 o n 空間複雜度的解法很容易實現。你能想出乙個只使用常數空間的解決方案嗎?在二叉搜尋樹中,...
99 恢復二叉搜尋樹
二叉搜尋樹中的兩個節點被錯誤地交換。請在不改變其結構的情況下,恢復這棵樹。示例 1 輸入 1,3,null,null,2 1 3 2輸出 3,1,null,null,2 3 1 2分析 1.假如乙個bst中序是4,2,3,1,我們發現要交換1和4,找到1和4並交換即可,通過觀察發現,第乙個要交換的節...
99 恢復二叉搜尋樹
二叉搜尋樹中的兩個節點被錯誤地交換。請在不改變其結構的情況下,恢復這棵樹。二叉搜尋樹中序遍歷為有序陣列,如 1,2,3,4,5,6 交換其中不相鄰任兩個,變成 1,6,3,4,5,2 會有兩個逆序對 6,3 和 5,2 可以看出交換位置為前一逆序對的前乙個元素和後一逆序對的後一元素。相鄰的話只有乙個...