摘要:題目描述給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點并且返回。分析對于二叉樹中序遍歷來說,某的下一個節點可以分為以下幾種情況不為時,根據中序遍歷的定義,下一個節點則是右子樹里最左邊的節點。
題目描述
給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點并且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指針。
分析對于二叉樹中序遍歷來說,某node的下一個節點可以分為以下幾種情況:
node.right 不為 null時,根據中序遍歷的定義,下一個節點則是node右子樹里最左邊的節點。
node.right 為 null時,考察node是否為node.parent的左節點,如果是的話,node的下一個節點就是node.parent;否則,考察node.parent是否為node.parent.parent的左節點,依次這樣向上探索下去。
代碼實現/*function TreeLinkNode(x){ this.val = x; this.left = null; this.right = null; this.next = null; }*/ function GetNext(node) { if(node === null) return null; if(node.right !== null){ node = node.right; while(node.left !== null){ node = node.left; } return node; }else{ while(node.next !== null){ if(node === node.next.left) return node.next; node = node.next; } } return null; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96154.html
摘要:重建二叉樹輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。所以先通過前序遍歷找出根節點,然后將中序遍歷分為左右子樹兩組,最后對于每個子樹依次遞歸調用。 重建二叉樹 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6}...
文章目錄 一、題目1、題目描述2、基礎框架3、原題鏈接 二、解題報告1、思路分析2、時間復雜度3、代碼詳解 三、本題小知識四、加群須知 一、題目 1、題目描述 ??給你一棵二叉搜索樹,請按 中序遍歷 將其重新排列為一棵遞增順序搜索樹,使樹中最左邊的節點成為樹的根節點,并且每個節點沒有左子節點,只有一個右子節點。??樣例輸入: [5,3,6,2,4,null,8,1,null,null,nu...
摘要:因此,根據題目給出的先序遍歷和中序遍歷,可以畫出二叉樹選參考數據結構與算法描述實現二叉樹算法淺談數據結構二叉樹慕課網實現二叉樹算法前端樹控件騰訊軟件開發面試題 內容銜接上一章 數據結構與算法:常見排序算法 內容提要 什么是樹 - 為什么使用樹 二叉樹 二叉查找樹 紅黑樹 B、B+樹 堆 伸展樹 樹 可以點擊鏈接感受下筆者用d3.js畫的tree https://codepen...
摘要:同樣結點樹的二叉樹,完全二叉樹的深度最小。二叉樹每個結點最多有兩個孩子,所以為它設計一個數據域和兩個指針域是比較自然的想法,我們稱這樣的鏈表叫做二叉鏈表。 二叉樹的概念 二叉樹(Binary Tree)是n(n>=0)個結點的有限集合,該集合或者為空集(空二叉樹),或者由一個根結點和兩棵互不相交的、分別稱為根結點的左子樹和右子樹的二叉樹組成。 showImg(https://seg...
閱讀 1579·2021-09-26 09:46
閱讀 2664·2021-09-07 09:59
閱讀 2750·2021-09-07 09:59
閱讀 1855·2019-08-30 14:20
閱讀 921·2019-08-26 13:39
閱讀 3172·2019-08-26 12:24
閱讀 770·2019-08-26 11:55
閱讀 1211·2019-08-23 16:49