zoukankan      html  css  js  c++  java
  • [ 剑指offer ] 面试题8:二叉树的下一个节点

    题目描述


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

     

    解题思路 


    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):
            # write code here
            node = pNode
            if not node:
                return None
            elif node.right:
                node = node.right
                while node.left:
                    node = node.left
                return node
            # 提问:如何判断node是父节点的右子树? -
            # 答:傻掉了,这样判断,node.next.right == node
    # 注意在做如上的判断的时候请加上前提条件 if node.next,保证代码的严谨
    elif node.next and node.next.right == node: while node.next: if node.next.left == node: return node.next node = node.next else: return node.next

    总结


  • 相关阅读:
    平时十六测
    平时十五测
    平时十四测
    poj 1486 Sorting Slides
    POJ 3621Sightseeing Cows
    POJ 2728 Desert King
    POJ3111 K Best
    NOIopenjudge 407:Heritage
    POJ#2065. SETI
    HDU 4607 Park Visit
  • 原文地址:https://www.cnblogs.com/remly/p/12302706.html
Copyright © 2011-2022 走看看