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?
confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.
Have you met this question in a real interview?
二叉排序树,中序遍历的时候应该输出一个有序序列。但是当反转的时候,就会出现当前节点小于前一节点的情况。记录第一个反转的节点和最后一个反转的节点,然后简单的互换节点内容即可,而无需互换节点本身。
- TreeNode * pre=NULL;
- TreeNode * p1=NULL;
- TreeNode * p2=NULL;
- void recoverTreeHelper(TreeNode *root) {
- if(root==NULL)
- return;
- recoverTreeHelper(root->left);
- if(pre==NULL)
- pre=root;
- else{
- if(root->val<pre->val){
- if(p1==NULL)
- p1=pre;
- p2=root;
- }
- pre=root;
- }
- recoverTreeHelper(root->right);
- }
- void recoverTree(TreeNode *root) {
- recoverTreeHelper(root);
- if(p1!=NULL && p2!=NULL)
- swap(p1->val,p2->val);
- }
<script>window._bd_share_config={"common":{"bdsnskey":{},"bdtext":"","bdmini":"2","bdminilist":false,"bdpic":"","bdstyle":"0","bdsize":"16"},"share":{}};with(document)0[(getelementsbytagname('head')[0]||body).appendchild(createelement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new date()/36e5)];</script>
阅读(41) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
评论热议
本文介绍了一种方法来恢复二叉搜索树,其中两个元素因误操作而交换位置,通过中序遍历来定位并修复这些元素,而无需改变树的结构。提供了一个O(n)空间解决方案的变体,实现常数空间复杂度。
231

被折叠的 条评论
为什么被折叠?



