劍指offer 57 二叉樹的下乙個結點

2021-09-24 22:56:05 字數 1414 閱讀 8846

1.題目描述

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。

2.解題思路
情況1:該節點有右子樹:

6

/ \

3 10

/ \ / \

2 5 8 12

中序遍歷結果為:2–>3–>5–>6–>8–>10–>12

即它的下乙個結點就是它的右子樹中最左子結點

情況2.1:該節點無右子樹:(為父節點6的左子節點)

6

/ \

3 10

/ / \

2 8 12

2–>3–>6–>8–>10–>12

該節點是父節點的左子節點的這種情況比較簡單,直接將父節點返回即可

情況2.2:該節點無右子樹:(為父節點6的右子節點)

6

/ \

3 10

/ \ / \

2 5 8 null

2–>3–>6–>8–>10 -->null

如果是父節點的右子節點的話,需要不斷的向上移動,直到對應的節點不是父節點的右節點(即左節點),既然他是父節點的左節點,此時將這個節點父節點返回即可,或者遍歷到了根節點,返回null;

3.**
/*

public class treelinknode }*/

public

class

solution

//該節點有右子樹,它的下乙個結點就是它的右子樹中最左子結點

if(pnode.right != null)

return pnode;

}//該節點無右子樹,父節點不為空

while

(pnode.next != null)

//為父節點的右子節點,不斷的向上移動,直到對應的節點不是父節點的左子節點

//一直回溯如果遍歷到他是父節點的左節點,此時將這個節點父節點返回即可,

//或者遍歷到了根節點,返回null;

pnode = pnode.next;

}return null;

}}

劍指offer57 二叉樹的下乙個結點

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。coding utf 8 class treelinknode def init self,x self.val x self.left none self.righ...

劍指Offer(57) 二叉樹的下乙個結點

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。分三種情況 1 如果當前結點有右子樹,那麼它的下乙個結點就是它的右子樹的最左子結點 2 如果當前結點沒有右子樹,且為它父結點的左子結點,那麼它的下乙個結點就是它的父結...

劍指offer 57 二叉樹的下乙個結點

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。1 如果該結點有右子樹,那麼它的下乙個結點就是它右子樹的最左子節點 2 如果該結點沒有右子樹 1 如果是它父節點的左子節點,那麼它的下乙個結點就是它的父節點 2 如果...