題目:
給定一棵二叉樹和其中的乙個節點,如何找出中序遍歷順序的下乙個節點?樹中的節點除了由兩個分別指向左右節點的指標外,還有乙個指向父節點的指標。
中序遍歷:先訪問當前節點的左子樹,再訪問當前節點本身,最後訪問當前節點的右子樹。
因此:
如果給定節點有右子樹,則下乙個節點是它的右子節點;
如果給定節點沒有右子樹,需要向上找到乙個祖父節點(它是自己父節點的左節點),該祖父節點的父節點就是下乙個節點。如果沒有找到,返回null。
中序遍歷順序為:428591637
如上圖中,給定節點9,則無右節點,找到祖父節點2是1的左節點,返回 1 的節點;給定 7 ,最後找到 1 的父節點為null,返回null
struct binarytreenode
;binarytreenode* getnext(binarytreenode* pnode)
} else
if (pnode->m_pparent !=
null)
pnextnode = pparent;
}return pnextnode;
}
58 二叉樹的下乙個節點
題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。始終搞不懂,為什麼要以節點的右孩子作為判斷標準。補充 當遍歷到當前節點,假如它是正常的二叉樹 有左右孩子 那麼此時中序遍歷的話,左孩子已經遍歷過了,當前節點...
尋找二叉樹中序遍歷的下乙個節點
尋找二叉樹中序遍歷的下乙個節點 題目給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。分析 首先需要了解中序遍歷的順序 對圖中的數中序遍歷序列則為 d b a e c f 因此參考該圖,考慮如何確定乙個節點的中序遍歷...
二叉樹的下乙個結點 中序遍歷
給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。struct treelinknode 既然有父節點,那麼久可以不用遍歷全部樹來獲得結果 可以分情況討論 首先中序遍歷是,先左子樹在根節點在右子樹 1 某乙個節點的中...