58 二叉樹的下乙個節點

2021-08-19 07:33:30 字數 1135 閱讀 8979

題目描述

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

始終搞不懂,為什麼要以節點的右孩子作為判斷標準。

補充:當遍歷到當前節點,假如它是正常的二叉樹(有左右孩子),那麼此時中序遍歷的話,左孩子已經遍歷過了,當前節點的右孩子肯定就是下乙個了。所以要以右孩子為判斷標準。

public

class solution

return tmp;

}else

return par;

}}

}return

null;

}}

/*

public class treelinknode }*/

public

class

solution

return temp;

}else

if(parent.right == pnode)}}

return

null;

}}

其實就不應該引入grandpa這個引數,因為使用pnode 和 parent兩個變數完全就夠了!當右孩子為null的時候,其實涉及到了鍊錶的知識,這表明,鍊錶方面還是不夠熟悉!

public

class

solution

return temp;

}else

if(parent.right == pnode)}}

return

null;

}}

可以進一步簡化:

public

class solution

return temp;

}elseelse}}

return

null;

}}

歸納發現:只要父節點的左孩子是當前節點,那這個父節點就是所求!

判斷的時候,可以以當前節點的next為條件,這樣比較簡便!也可以先賦乙個值,這樣可能會有點重複,而且while括號內的if判斷所放的位置可能也不一樣!

二叉樹的下乙個節點

問題 題目給出的預設 為 1 coding utf 8 2 class treelinknode 3 def init self,x 4 self.val x5 self.left none6 self.right none7 self.next none 8class solution 9def ...

二叉樹的下乙個節點

coding utf 8 class treelinknode def init self,x self.val x self.left none self.right none self.next none 1 該節點有左子樹,說明左邊已經遍歷過,該節點作為根節點,下一步應該填右子樹,如果該節點有...

二叉樹的下乙個節點

題目描述 給定一棵二叉樹和其中的乙個節點,如何找出中序遍歷序列的下乙個節點?樹中的節點除了有兩個分別別指向左右子節點的指標,還有乙個指向父節點的指標 例如 這棵樹的中序遍歷是 d,b,h,e,i,a,f,c,g 解題思路 3 當結點的右子樹為空,且是它父節點的左子節點時,它的下乙個節點就是它的父節點...