国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

二叉樹的下一個結點

2019-11-08 03:04:23
字體:
來源:轉載
供稿:網友

題目描述

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

算法解析: 如果當前結點的右子節點不為空,那么下一個結點一定出現在當前結點的右子樹上,轉換為尋找當前右子樹中序遍歷的第一個結點。如果當前結點的父節點不為空,且當前結點是父節點的左子節點,則下一個結點一定是父節點,如果當前結點是父節點的右子節點,那么將當前結點和父節點視為一個子樹,直到找到一個父節點,以之為左子樹。

代碼如下:

public TreeLinkNode GetNext(TreeLinkNode pNode) { if (pNode == null){ return null; } TreeLinkNode pNext = null; if (pNode.right != null){ TreeLinkNode PRight = pNode.right; while (pRight.left != null){ pRight = pRight.left; } pNext = pRight; }else if (pNode.next != null){ TreeLinkNode pCurrent = pNode; TreeLinkNode pParent = pNode.next; while (pParent != null && pCurrent == pParent.right){ pCurrent = pParent; pParent = pParent.next; } pNext = pParent; } return pNext; }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岑溪市| 保德县| 繁昌县| 巩义市| 晋中市| 鹤庆县| 手游| 金寨县| 和平县| 林芝县| 理塘县| 施秉县| 孝昌县| 汝南县| 洛阳市| 吉林市| 墨竹工卡县| 开化县| 噶尔县| 文登市| 陕西省| 怀来县| 江津市| 临城县| 含山县| 中江县| 应用必备| 甘南县| 景德镇市| 策勒县| 丰原市| 锦州市| 三门县| 青田县| 综艺| 司法| 峡江县| 河曲县| 临沭县| 上林县| 灵丘县|