LeetCode 99 恢復二叉搜尋樹

2021-09-29 22:26:29 字數 595 閱讀 8092

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) 空間複雜度的解法很容易實現。

你能想出乙個只使用常數空間的解決方案嗎?

1. 中序遍歷,儲存陣列

2. 排序陣列

3. 重新賦值,恢復二叉樹

#include #include #include using namespace std;

struct treenode

};class solution

private:

vectorvec_val;

/* 中序遍歷 */

void treemidval(treenode *root)

/* 排序 */

void treemidsort()

/* 恢復 */

void recover(treenode *root)

};int main()

Leetcode99 恢復二叉搜尋樹

第一次寫這個部落格以後我發現我理解錯了題目,但是我的問題更具有一般性,更複雜,所以文章就不改了 題目 只有兩個結點被錯誤的交換。我的 有任意多個結點被錯誤的交換。先分析題目 使用o n 空間複雜度的解法很容易實現,那麼我們先看看很容易實現是怎實現的。1 中序遍歷二叉樹,並將中序序列儲存在乙個陣列nu...

LeetCode99 恢復二叉搜尋樹

二叉搜尋樹中的兩個節點被錯誤地交換。請在不改變其結構的情況下,恢復這棵樹。樹節點的定義 definition for a binary tree node.public class treenode treenode int val treenode int val,treenode left,tr...

leetcode 99恢復二叉搜尋樹

給你二叉搜尋樹的根節點 root 該樹中的兩個節點被錯誤地交換。請在不改變其結構的情況下,恢復這棵樹。高階 使用 o n 空間複雜度的解法很容易實現。你能想出乙個只使用常數空間的解決方案嗎?題目要求的是二叉搜尋樹,二叉搜尋樹有乙個特點,那就是有序,所以我們可以得知在中序遍歷二叉搜尋樹得到的序列是遞增...