LeetCode-99-Recover Binary Search Tree 二叉树交换结点
来源:互联网 发布:欧几里得算法 编辑:程序博客网 时间:2024/06/06 02:47
题意:给一个有序的二叉树,已知有两个结点被swap了,让你恢复,要求空间复杂度为O1。
题解:中序遍历,应该是递增的,当冲突时记录父子的结点。如果不出意外,会有两次冲突,如果只有一次冲突,那就交换这个父子就好。如果有两次冲突,就交换第一次的父亲和第二次的儿子。
举例:
1234567->7234561,这时交换72组合的7 with 61组合的1
1234567->2134567,没找到第二组冲突,直接交换21
# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None 52341# self.right = Noneclass Solution(object): curV=-9999999 change=[None,None,None,None]#第一组冲突的父子、第二组冲突的父子 def recoverTree(self, root): """ :type root: TreeNode :rtype: void Do not return anything, modify root in-place instead. """ self.change=[None,None,None,None]#第一组冲突的父子、第二组冲突的父子 self.curV=-99999999 self.dfs(root) if self.change[3]==None: temp=self.change[0].val self.change[0].val=self.change[1].val self.change[1].val=temp else: temp=self.change[0].val self.change[0].val=self.change[3].val self.change[3].val=temp def dfs(self,root): if root==None:return self.dfs(root.left) if root.val<self.curV: #print "fuck" if self.change[1]==None:self.change[1]=root else:self.change[3]=root if self.change[1]==None: self.change[0]=root # print root.val else:self.change[2]=root self.curV=root.val #print "curv",self.curV self.dfs(root.right)
阅读全文
1 0
- LeetCode-99-Recover Binary Search Tree 二叉树交换结点
- lintcode--二叉搜索树交换节点(leetcode--Recover Binary Search Tree)
- LeetCode | Recover Binary Search Tree(恢复二叉搜索树)
- leetcode 99. Recover Binary Search Tree BST二叉搜索树的两元素交换的恢复 + 中序遍历
- 【修正二叉树】Recover Binary Search Tree
- 二叉树-recover binary search tree
- LeetCode 99: Recover Binary Search Tree
- LeetCode(99)Recover Binary Search Tree
- LeetCode 99 Recover Binary Search Tree
- LeetCode(99) Recover Binary Search Tree
- [leetcode 99] Recover Binary Search Tree
- [leetcode]99 Recover Binary Search Tree
- leetcode || 99、Recover Binary Search Tree
- 【LeetCode #99】Recover Binary Search Tree
- leetcode 99: Recover Binary Search Tree
- [leetcode-99]Recover Binary Search Tree(java)
- leetCode 99: Recover Binary Search Tree
- LeetCode(99) Recover Binary Search Tree
- zookeeper部署
- PAT甲级1004Counting Leaves
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛_Coin
- 6-2 oracle创建数据表
- 《浅谈大数据技术》读后感
- LeetCode-99-Recover Binary Search Tree 二叉树交换结点
- 不能是虚函数的有
- Joy of Flight 2014-2015 ACM-ICPC, NEERC, Northern Subregional Contest
- Poj 3106 Flip and Turn(模拟+优化)
- sklearn.svm.SVC 参数说明
- linux下设置静态IP实现上网
- Android动画基础
- 块状树(bzoj 3720: Gty的妹子树)
- poj1904