题解 | #找到搜索二叉树中两个错误的节点#

找到搜索二叉树中两个错误的节点

https://www.nowcoder.com/practice/4582efa5ffe949cc80c136eeb78795d6

# 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 __init__(self) -> None:
		# 创建一个列表用于存储中序遍历的节点值
        self.res = []

    def findError(self, root: TreeNode) -> List[int]:
        # write code here
        if not root:
            return []
		# 获取中序排列的节点数据
        self.inorder(root)
		# 将错误的节点列表重新排序
		# 如果中序遍历的节点值与排序后的节点值不相等,则说明该节点是错误节点
		# 如: [3,2,1,4]  排序后是 [1,2,3,4]
		# 3 和 1 的节点值不相等,则说明这两个节点是错误节点 
        alstt = sorted(self.res)
        res_lst = []
        for l,r in zip(self.res, alstt):
            if l != r:
                res_lst.append(l)
		# 结果是从大到小排列的,因此倒序输出
        return res_lst[::-1]
    
    def inorder(self, root:TreeNode):
		# 中序遍历树,因为搜索树的中序遍历是从小到大排列的,因此只需要找到排序不正常的值即可
        if not root:
            return None
        self.inorder(root.left)
        self.res.append(root.val)
        self.inorder(root.right)




全部评论

相关推荐

这不纯纯作弊了吗😢😢😢
编程界菜鸡:信这个的这辈子有了,这智商你靠啥都没用
点赞 评论 收藏
分享
看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗? 那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务