二叉搜尋樹中的兩個節點被錯誤地交換。
請在不改變其結構的情況下,恢復這棵樹。
示例 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) 空間複雜度的解法很容易實現。
你能想出乙個只使用常數空間的解決方案嗎?
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
else
}if(pre && pre->val > cur->val)
second = cur;
}pre = cur;
cur = cur->right;
}swap(first->val,second->val);
}};
恢復二叉搜尋樹
題目 二叉搜尋樹中的兩個節點被錯誤地交換。請在不改變其結構的情況下,恢復這棵樹。示例 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.相鄰兩個數字交換 1,2,3,4,5,6 交換2,3變為 1,3,2,4,5,6 只有一組逆序對,中序遍歷記錄前驅,然後找到這兩數交換即可 2.不相鄰兩個數字交...
恢復二叉搜尋樹
在一棵二叉搜尋樹中,只有兩個節點是被交換的.找到這些節點並交換,如果沒有節點被交換就返回原來的樹的根節點.樣例1 輸入 輸出 解釋 給出的二叉搜尋樹 4 5 2 1 3 返回 4 2 5 1 3樣例2 輸入 輸出 解釋 給出的二叉搜尋樹 1 2 5 4 3 返回 4 2 5 1 3 definiti...