zoukankan      html  css  js  c++  java
  • 二叉树的下一个结点 -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
    
    
                
    
  • 相关阅读:
    技巧使用
    一些常用的安装包可选安装组件
    php ob_flush与flush的作用
    HTML5 localStorage本地存储
    php clearstatcache
    iconv
    Mysql数字类型转换函数
    POJ
    POJ
    POJ
  • 原文地址:https://www.cnblogs.com/dolisun/p/11340282.html
Copyright © 2011-2022 走看看