zoukankan      html  css  js  c++  java
  • 剑指Offer 08 二叉树的下一个节点

    二叉树的下一个节点

    给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

     1 # -*- coding:utf-8 -*-
     2 # class TreeLinkNode:
     3 #     def __init__(self, x):
     4 #         self.val = x
     5 #         self.left = None
     6 #         self.right = None
     7 #         self.next = None
     8 class Solution:
     9     def GetNext(self, pNode):
    10         if pNode.right != None:
    11             node = pNode.right
    12             while node.left:
    13                 node = node.left
    14             return node
    15         else:
    16             while pNode.next:
    17                 parent = pNode.next
    18                 if parent.left == pNode:
    19                     return parent
    20                 pNode = pNode.next
    21         # write code here

    思路分析:

    1.如果一个节点的右子树不为空,那么该节点的下一个节点是:此节点的右子树的最左节点,返回这个左节点。

    2.否则(右子树为空),该节点c的下一个节点是:向上查找c的父节点p,并且满足c恰好是p的左孩子,返回p节点。

  • 相关阅读:
    luoguP2939 [USACO09FEB]改造路Revamping Trails
    出题
    数字游戏
    统一异常处理
    数据验证
    拦截器
    数据绑定和表单标签库
    类型转换和格式化
    Spring MVC入门
    4springboot:日志(下)
  • 原文地址:https://www.cnblogs.com/asenyang/p/11016522.html
Copyright © 2011-2022 走看看