国产探花免费观看_亚洲丰满少妇自慰呻吟_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; }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尉犁县| 武义县| 巍山| 密山市| 安义县| 固始县| 固镇县| 北川| 靖远县| 新乡市| 师宗县| 昌江| 大荔县| 靖州| 忻城县| 海阳市| 汾阳市| 洛阳市| 温州市| 泗阳县| 怀来县| 南昌县| 习水县| 通渭县| 元谋县| 隆化县| 尖扎县| 高雄市| 资兴市| 繁昌县| 增城市| 苍梧县| 益阳市| 田林县| 汾西县| 南丹县| 巴南区| 仪陇县| 城口县| 汾阳市| 察雅县|