題目描述
請設計乙個演算法,尋找二叉樹中指定結點的下乙個結點(即中序遍歷的後繼)。
給定樹的根結點指標treenode* root和結點的值int p,請返回值為p的結點的後繼結點的值。保證結點的值大於等於零小於等於100000且沒有重複值,若不存在後繼返回-1。
/*
struct treenode
};*/
class successor
if (i == res.size() - 1)
return -1;
else
return res[i + 1];
}void midindex(treenode* root)
};
題目分析:
要尋找中序遍歷的某個節點的下乙個節點,肯定是要通過中序遍歷實現的,題目中明確告訴我們節點的值沒有重複,所以只要在中序遍歷的過程中,某個節點的值等於p,則告訴遞迴者下乙個要遍歷的節點便是我們要找的節點,這個需要有個訊號在多次遞迴之間進行傳遞訊息,c++裡用引用完全可以實現,只需要傳遞乙個bool型別的引用便可。
class successor
int findsucc1(treenode* root,int p,bool &sign)
};
class successor
if(!s.empty())
}return -1;
}
};
前序遍歷 中序遍歷 後序遍歷 層序遍歷
根據遍歷畫圖 先根據中序和前序找到每一級的所有根 最近也是在準備筆試,由於沒有系統的學過資料結構,所以每次在考到二叉樹的遍歷的時候都是直接跪,次數多了也就怒了,前些天也是準備 沒時間整這些,現在提交了,算是稍微輕鬆點了,所以花了半天的時間來學了下二叉樹。現在記下來,以便後序查閱。一 二叉樹的遍歷概念...
樹的遍歷 先序遍歷 中序遍歷 後序遍歷
名詞解釋 1 每個元素稱為節點 2 有乙個特定的節點被稱為根節點或樹根 3 除根節點外的其餘資料元素被分為m個互不相交的集合t1,t2,t3.tm 1,其中每乙個集合ti本身也是乙個樹,被稱作原樹的子樹 節點的度 乙個節點含有子樹的個數稱為該節點的度 葉節點或終端節點 度為0的節點稱為葉節點 非終端...
前序遍歷 中序遍歷 後序遍歷
只要是搞計算機的,對資料結構中二叉樹遍歷都不陌生,但是如果用到的機會不多那麼就會慢慢淡忘,溫故而之新才是最好的學習方式,現在就重新溫習一下這方面的知識。首先我想先改變這幾個遍歷的名字 前根序遍歷,中根序遍歷,後根序遍歷 前中後本來就是相對於根結點來說的,少乙個字會產生很多不必要的誤解。1.前根序遍歷...