• 二叉树的下一个结点 -python


    思路:
    分4种情况:

    1. 当该节点存在右子树时,那么下一个节点一定在右子树中产生
      这种情况下又分成两种情况:
      (1)右子树不存在左分支,那么要找的下一个节点就是右子树的根节点。
      (2)右子树中存在左分支,那么不停的寻找左分支的左分支就可以了。
      2.当该节点不存在右子树时,那么下一个节点一定在该节点的父节点中产生,这种情况下又分两种情况:
      (1)该节点是他的父节点的左孩子,那么下一个节点就是该节点的父节点
      (2) 该节点是他父节点的右孩子,那么就需要继续往该节点的父节点的父节点去寻找了。然后重复前面的分析。
    # -*- coding:utf-8 -*-
    # class TreeLinkNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    #         self.next = None
    class Solution:
        def GetNext(self, pNode):
            if not pNode: return None
            if pNode.right:
                pNode = pNode.right
                while pNode.left:
                    pNode = pNode.left
                return pNode
            else:
                while pNode.next:
                    if pNode == pNode.next.left:
                        return pNode.next
                    pNode = pNode.next
            return None
    
    
                
    
  • 相关阅读:
    浅谈莫比乌斯反演/杜教筛/狄利克雷卷积
    bzoj3944:Sum
    bzoj3994:[SDOI2015]约数个数和
    bzoj2820:YY的GCD
    bzoj5323:[Jxoi2018]游戏
    bzoj5324:[Jxoi2018]守卫
    斐波那契和矩阵快速幂
    CF1278C-Berry Jam-(前缀和)
    CF1278B-A and B-(简单数学)
    CF92B-Binary Number-(思维)
  • 原文地址:https://www.cnblogs.com/dolisun/p/11340282.html
Copyright © 2020-2023  润新知