牛客题霸 找到搜索二叉树中两个错误的节点
题目描述
一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请按升序输出这两个错误节点的值。(每个节点的值各不相同)
示例1
输入
{1,2,3}
返回值
[1,2]
备注:
1 leq n leq 5 imes 10^51≤n≤5×105
说明:本题目包含复杂数据结构TreeNode,
Python代码:
# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # # @param root TreeNode类 the root # @return int整型一维数组 # class Solution: def findError(self , root ): # write code here if not root: return [] res = [] stack = [] while stack or root: while root: stack.append(root) root = root.left root = stack.pop() res.append(root.val) root = root.right ans = [] for i in range(len(res)-2, -1, -1): if res[i] > res[i+1]: ans.append(res[i+1]) break for i in range(1, len(res)): if res[i] < res[i-1]: ans.append(res[i-1]) break return ans