劍指offer——二叉樹中序的下一個節點
阿新 • • 發佈:2018-12-14
二叉樹的問題一般採用兩種方式,一種根據需求一步一步探討,第二種,將二叉樹遍歷至陣列,對陣列操作。
第一種,根據中序遍歷,指定節點的下一個一般為右節點,子節點的左節點或者父節點:
class Solution: def GetNext(self,pNode): if pNode.right: p=pNode.right while p.left: p=p.left return p while pNode.next: if(pNode.next.left==pNode): return pNode.next pNode=pNode.next return
第二種 遍歷輸出中序序列陣列,在陣列中找出下一個節點
class Solution: def GetNext(self,pNode): dummy=pNode while dummy.next: dummy=dummy.next self.result=[] self.midTraversal(dummy) return self.reslut[self.result.index(pNode)+1] if self.result.index(pNode) !=len(result)-1 else None def midTraversal(self,root): if not root: return self.midTraversal(root.left) self.midTraversal(root) self.midTraversal(root.right)