【劍指Offer|C++】面試題8:尋找二叉樹(shù)的下一個(gè)節(jié)點(diǎn)|上一個(gè)節(jié)點(diǎn)-創(chuàng)新互聯(lián)

題目:給定一個(gè)二叉樹(shù)和其中的一個(gè)結(jié)點(diǎn),請(qǐng)找出中序遍歷順序的下一個(gè)結(jié)點(diǎn)并且返回。注意,樹(shù)中的結(jié)點(diǎn)不僅包含左右子結(jié)點(diǎn),同時(shí)包含指向父結(jié)點(diǎn)的指針。

創(chuàng)新互聯(lián)長(zhǎng)期為超過(guò)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為資源企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),資源網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

題目算是比較新穎的了
題解:

//結(jié)構(gòu)體定義
struct BinaryTreeNode
{int value;
	BinaryTreeNode* left;
	BinaryTreeNode* right;
	BinaryTreeNode* parent;
}

//找下一個(gè)節(jié)點(diǎn)
BinaryTreeNode* GetNext(BinaryTreeNode* node)
{//特殊處理
	if(node == nullptr)
		return nullptr;
	
	BinaryTreeNode* next = nullptr;//定義要返回的結(jié)果指針
	if(node->right != nullptr)//有右子樹(shù):找到右子樹(shù)的最左節(jié)點(diǎn)
	{BinaryTreeNode* pRight = node->right;
		while(pRight ->left != nullptr)
		{	pRight = pRight->left;
		}
		next = pRight;
	}
	else if(node->parent != nullptr)//非根節(jié)點(diǎn)
	{BinaryTreeNode* current = node;
		BinaryTreeNode* pParent = node->parent;
		while(pParent != nullptr && current == pPrent->right)//沒(méi)有右子樹(shù)且他還是父節(jié)點(diǎn)的右子節(jié)點(diǎn):向上遍歷直到找到一個(gè)節(jié)點(diǎn)是父節(jié)點(diǎn)的左子節(jié)點(diǎn),該父節(jié)點(diǎn)就是要找的這個(gè)節(jié)點(diǎn)
		{	current = pParent;
			pParent= pParent->parent;
		}
		next = pParent;//沒(méi)有右子樹(shù)且是父節(jié)點(diǎn)的左子節(jié)點(diǎn):該節(jié)點(diǎn)的父節(jié)點(diǎn)就是要找的節(jié)點(diǎn)
	}
}

拓展:尋求上一個(gè)節(jié)點(diǎn)

跟上述思路相反:
如果有左子樹(shù),即為左子樹(shù)的最右子節(jié)點(diǎn)。
如果無(wú)左子樹(shù),如果本身為父節(jié)點(diǎn)的的右子節(jié)點(diǎn),即為父節(jié)點(diǎn)
為父節(jié)點(diǎn)的左子節(jié)點(diǎn),即為祖父節(jié)點(diǎn)

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享文章:【劍指Offer|C++】面試題8:尋找二叉樹(shù)的下一個(gè)節(jié)點(diǎn)|上一個(gè)節(jié)點(diǎn)-創(chuàng)新互聯(lián)
文章出自:http://muchs.cn/article10/dcojgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站軟件開(kāi)發(fā)、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站建設(shè)標(biāo)簽優(yōu)化、網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)