zoukankan      html  css  js  c++  java
  • 剑指offer-二叉树的下一结点-树-python

    题目描述

    给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
     
    思路:中序遍历,pNode节点的下一个节点根据中序遍历法则寻找
     
    # -*- 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):
            # write code here
            if pNode.right:  # 该节点有右子树
                p = pNode.right #将右子树第一个节点作为P
                while p.left:
                    p = p.left #然后找其左子树最左边
                return p
            while pNode.next:  # 无右子树,则找第一个当前节点是父节点左孩子的节点
                if (pNode.next.left == pNode): #如果pNode节点的父节点的左节点是pNode
                    return pNode.next #则该节点的父节点为中序遍历下一个节点
                pNode = pNode.next  # 沿着父节点向上遍历
            return  # 到了根节点仍没找到,则返回空

     

  • 相关阅读:
    BETA 版冲刺前准备
    第十一次作业
    Alpha 冲刺 (10/10)
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    Alpha 冲刺 (5/10)
    Alpha 冲刺 (4/10)
    抽奖系统现场编程
  • 原文地址:https://www.cnblogs.com/ansang/p/11892503.html
Copyright © 2011-2022 走看看