题目描述
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
解题思路
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
总结
[ 剑指offer ] 面试题8:二叉树的下一个节点
原文地址:https://www.cnblogs.com/remly/p/12302706.html
时间: 2024-10-25 11:25:13