Python解法
思路:腦中構造出一個樹。
1.左子樹爲父節點;
2.如果一個節點有右子樹,下一個節點爲右子樹的最左結點;
3.如果一個節點無右子樹,且爲父節點的左子結點,下一個節點爲父節點;
4.如果爲父節點的右子節點,向上遍歷直到找到其是父節點左子節點的結點
# -*- 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):
if not pNode:return None
nxt = None
if pNode.right:#有右子樹
right = pNode.right
while right.left:
right = right.left
nxt = right
elif pNode.next:#①爲父節點左子樹;無右子樹:②父節點爲爺爺結點左;③父節點爲爺爺結點右,繼續遍歷
cur = pNode
par = pNode.next
while par and cur == par.right:#情況③,其餘直接爲父節點
cur = par
par = par.next
nxt = par
return nxt
考查
- 考查對二叉樹中序遍歷的理解程度;
- 考查分析複雜問題的能力。通過畫出二叉樹的結構圖、通過具體的例子找出中序遍歷下一個節點的規律,纔有可能設計出可行的算法。