题解 | #二叉树的下一个结点#

二叉树的下一个结点

http://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e

思路是找到根节点,然后从根节点开始中序遍历,将遍历结果存进列表中,最后找到指定节点的索引,那么下一个索引位置就是答案,或者下一个索引不存在
class Solution:
    vals = []
    def GetNext(self, pNode):
        # write code here
        if not pNode:
            return None

        root = pNode
        # 找到根节点
        while root.next:
            root = root.next

        self.MidOrder(root)
        
        valCount = len(self.vals)
        valId = self.vals.index(pNode)
        if valId >= 0 and valId + 1 < valCount:
            return self.vals[valId + 1]
        return None

    def MidOrder(self, root):
        if not root:
            return None
    
        self.MidOrder(root.left)
        self.vals.append(root)
        self.MidOrder(root.right)


全部评论

相关推荐

收到了北京经纬恒润AE产品测试部门的offer,有了解的友友吗?工作内容怎么样?加班真的很严重吗?值得去吗?
La_place:有人说的人在那边,就是正常互联网作息吧,一天十个小时出头,双休这样。加班有,但是可能也不算严重?
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务