[ 剑指offer ] 面试题8:二叉树的下一个节点
Posted remly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ 剑指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
总结
以上是关于[ 剑指offer ] 面试题8:二叉树的下一个节点的主要内容,如果未能解决你的问题,请参考以下文章