《剑指offer》二叉树的下一个节点
生活随笔
收集整理的這篇文章主要介紹了
《剑指offer》二叉树的下一个节点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點并且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指針。
解析:主要分兩大類。一類:該節點有右子樹,則找到右子樹的最左邊的節點返回;二類是該孩子沒有右子樹,又可以分為兩類。1.該節點就是左孩子了,直接找到它的父節點;2.不是左孩子,繼續向上遍歷其父節點的父節點,重復之前的判斷,返回結果
/* public class TreeLinkNode {int val;TreeLinkNode left = null;TreeLinkNode right = null;TreeLinkNode next = null;TreeLinkNode(int val) {this.val = val;} } */ public class Solution {public TreeLinkNode GetNext(TreeLinkNode pNode){if(pNode==null){return null;}//右子樹不為空,則找到右子樹的最左邊的節點if(pNode.right!=null){pNode=pNode.right;while(pNode.left!=null){pNode=pNode.left;}return pNode;}//該節點沒有右子while(pNode.next!=null){if(pNode.next.left==pNode){//該節點是左孩子節點,則下一個節點就是他的父節點return pNode.next;//返回父節點}pNode=pNode.next;}return null;} }總結
以上是生活随笔為你收集整理的《剑指offer》二叉树的下一个节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《剑指offer》删除链表中重复的节点
- 下一篇: 《剑指offer》把二叉树打印成多行