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
    
    
                
    
  • 相关阅读:
    我是如何用三小时搞出个赚钱产品的?
    搭建一个基于nuxt.js的项目
    栅格系统
    git使用
    通过JS获取屏幕高度,借助屏幕高度设置div的高度
    如何理解盒模型
    e.target.value 和 this 的区别
    组件化设计:弹窗的使用逻辑
    uni-app 入坑记
    MAC 系统快捷键
  • 原文地址:https://www.cnblogs.com/dolisun/p/11340282.html
Copyright © 2011-2022 走看看