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

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > leetcode筆記:Recover Binary Search Tree

leetcode筆記:Recover Binary Search Tree

來源:程序員人生   發布時間:2016-03-31 08:31:55 閱讀次數:2633次

1. 題目描寫

Two elements of a binary search tree (BST) are swapped by mistake.
Recover the tree without changing its structure.
Note:
A solution using O(n) space is pretty straight forward. Could you devise a constant space solution?

2. 題目分析

題目的大意是,在2叉排序樹中有兩個節點被交換了,要求把樹恢復成2叉排序樹。

1個最簡單的辦法是,中序遍歷2叉樹生成序列,然后對序列中排序毛病的進行調劑。最后再進行1次賦值操作。這類方法的空間復雜度為O(n)。

但是,題目中要求空間復雜度為常數,所以需要換1種方法。

遞歸中序遍歷2叉樹,設置1個prev指針,記錄當前節點中序遍用時的前節點,如果當前節點大于prev節點的值,說明需要調劑次序。

3. 示例代碼

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode *p,*q; TreeNode *prev; void recoverTree(TreeNode *root) { p=q=prev=NULL; inorder(root); swap(p->val,q->val); } void inorder(TreeNode *root) { if(root->left)inorder(root->left); if(prev!=NULL&&(prev->val>root->val)) { if(p==NULL)p=prev; q=root; } prev=root; if(root->right)inorder(root->right); } };

4. 小結

有1個技能是,若遍歷全部序列進程中只出現了1次次序毛病,說明就是這兩個相鄰節點需要被交換。如果出現了兩次次序毛病,那就需要交換這兩個節點。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产二区自拍 | 成人精品一区二区户外勾搭野战 | 亚洲精品久久久蜜桃 | 久久视频一区 | 久久手机免费视频 | 综合久久一区二区三区 | 网站黄色在线 | 91在线区| 亚洲成人综合网站 | 久久韩日| 日干夜干 | 国产一卡二卡三卡 | 一区二区三区国产片 | 亚洲一区二区三区日韩 | 在线播放一区二区三区 | 欧美日韩第一页 | 亚洲欧美成人网 | 欧美国产在线观看 | 成人在线免费观看 | 欧美激情视频一区二区三区 | av资源在线免费观看 | 91精品国产综合久久久久 | 亚洲色图在线观看 | 久久精品99国产精品日本 | 欧美一及黄色片 | 看国产一级毛片 | 综合av第一页 | 日韩精品视频在线免费观看 | 色综合99| 一区二区不卡视频 | 国产精品99久久 | 亚洲国产成人在线 | 免费在线国产 | 国产精品18 | 国产人妖一区 | 国产一区二区三区视频在线 | 日批免费视频 | 在线国产一区二区 | 欧美在线三级 | 久久久免费 | 久久精品一级 |