應該交換3和22. 4 3 2 1=>應交換4和1這兩種序列對應了不符合條件的BST的中序遍歷序列的所有可能性---兩個節點中序遍歷相鄰/不相鄰如果我們用一個數組swap保存所有中序遍歷不遞增">

日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > Recover Binary Search Tree [leetcode]

Recover Binary Search Tree [leetcode]

來源:程序員人生   發布時間:2014-10-02 08:00:01 閱讀次數:2376次

本題是在中序遍歷的基礎上,找不合規范(不是遞增)的樹節點對,然后交換

首先看兩種序列:

1. 1 3 2 4=>應該交換3和2

2. 4 3 2 1=>應交換4和1

這兩種序列對應了不符合條件的BST的中序遍歷序列的所有可能性---兩個節點中序遍歷相鄰/不相鄰

如果我們用一個數組swap保存所有中序遍歷不遞增的結果,那么這個數組只可能是2或者4的大小

而我們交換數組中節點對內容,只需交換第一個和最后一個樹節點對的內容

vector<TreeNode *> swap; TreeNode * pre; void recoverTree(TreeNode *root) { pre = new TreeNode(-999999); swap = vector<TreeNode *>(); inorder(root); if (swap.size() > 1) { int val = swap[0]->val; swap[0]->val = swap[swap.size() - 1]->val; swap[swap.size() - 1]->val = val; } } void inorder(TreeNode * root) { if (root == NULL) return; inorder(root->left); if (pre->val > root->val) { swap.push_back(pre); swap.push_back(root); } pre = root; inorder(root->right); }
由于只交換第一個和最后一個樹節點內容,我們可以只保存第一個和最后一個Node

if(!first) first = pre;

last = root;

替換

swap.push_back(pre); swap.push_back(root);

代碼如下:

TreeNode * first, * last; TreeNode * pre; void recoverTree(TreeNode *root) { pre = new TreeNode(-999999); first = last = NULL; inorder(root); if (first) { int val = first->val; first->val = last->val; last->val = val; } } void inorder(TreeNode * root) { if (root == NULL) return; inorder(root->left); if (pre->val > root->val) { if (!first) first = pre; last = root; } pre = root; inorder(root->right); }



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲激情影院 | 国产视频一区在线播放 | 成人18视频 | 欧美日韩三区 | 国产91在线 | 欧美 | 久久久精品网站 | 九九九久久 | 日韩av电影免费观看 | 亚洲精品高清视频 | 免费欧美日韩 | 黄色a级| 国产又色又爽又黄又免费 | 成人做爰www免费看视频网站 | 日韩国产在线播放 | 香蕉午夜 | 不卡一二三区 | 欧美一a一片一级一片 | 精品天堂| 韩国精品一区二区三区 | 操操操操操操 | 日韩一区精品视频 | 国产成人在线视频网站 | 亚欧洲精品视频在线观看 | 白浆在线 | 国内精品一区二区 | 久久成人免费 | 粉嫩一区二区 | 久久久久无码国产精品一区 | 欧美精品久久久 | 99国内精品 | 综合久 | 国产精品亚洲一区二区三区在线 | 久久精品a| 国产精品综合一区二区 | 91精品国产一区二区 | 青青草免费在线视频播放 | 国产视| 欧美日韩国产精品 | 91亚洲成a人片在线观看www | 亚洲精品一二 | 亚洲精品天堂 |