二叉樹的下一個節點
阿新 • • 發佈:2019-02-05
劍指offer58題
解題思路
這個題需要考慮的點是
- 該節點存在右子樹,那麼下一個節點就是右子樹的最左節點
- 該節點不存在右子樹的話
- 該節點是父節點的左節點,那麼下一個節點是父節點
- 該節點是父節點的右節點,向上查詢到一個節點是其父節點的左節點,那麼這個節點的父節點就是下一個節點
程式碼
class Solution { public: TreeLinkNode* GetNext(TreeLinkNode* pNode) { if(pNode == nullptr) return nullptr; TreeLinkNode* temp = nullptr; if(pNode->right) { temp = pNode->right; while(temp->left) temp = temp->left; } else if(pNode->next) { TreeLinkNode* cur = pNode; TreeLinkNode* parent = pNode->next; while(parent != nullptr && parent->left != cur) { cur = cur->next; parent = parent->next; } temp = parent; } return temp; } };