国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++ 二叉樹的鏡像實例詳解

2020-01-26 14:06:03
字體:
供稿:網(wǎng)友

二叉樹的鏡像:將一個二叉樹的左右子樹,調(diào)換位置。即下圖的形式:

遞歸的思想是:

從根節(jié)點的左右子樹進行交換,然后以根節(jié)點的左子樹為根節(jié)點,而后以根節(jié)點的右結(jié)點為根節(jié)點,進行左右子樹交換。遇到空節(jié)點或葉節(jié)點直接返回。下面求二叉樹鏡像的函數(shù)代碼實現(xiàn):

template<class T> void MirroTree(TreeNode<T> * root) {   if (root == NULL)     return;   if (root->_left == NULL && root->_right == NULL)     return;   else   {     TreeNode<T>* temp = root->_left;     root->_left = root->_right;     root->_right = temp;   }   MirroTree(root->_left);   MirroTree(root->_right); } 

非遞歸實現(xiàn)思想:

利用stack棧的FILO,即先進后出原則,將根節(jié)點先行壓入棧中,然后進入棧同時取棧頂結(jié)點并pop棧,然后交換左右子樹的結(jié)點,若根節(jié)點的左右子樹不為空,即壓入棧中,直到棧為空則停止。

下面是非遞歸實現(xiàn)代碼:

template<class T> void MirroTree_NoR(TreeNode<T>* root) {   stack<TreeNode<T>*> s;   s.push(root);   while (s.size())   {     TreeNode<T>* Top = s.top();     if (Top->_left != NULL || Top->_right != NULL)     {       TreeNode<T>* temp = Top->_left;       Top->_left = Top->_right;       Top->_right = temp;     }     if (Top->_left != NULL)       s.push(Top->_left);     if (Top->_right != NULL)       s.push(Top->_right);   } } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 白朗县| 克东县| 荆州市| 宁明县| 安塞县| 景宁| 阿克| 花垣县| 镇平县| 清镇市| 锡林郭勒盟| 福安市| 黔江区| 三亚市| 孝感市| 常州市| 通道| 珠海市| 洛浦县| 张家界市| 维西| 莆田市| 开江县| 乡宁县| 将乐县| 治县。| 扶风县| 静安区| 高青县| 定南县| 水富县| 武邑县| 高清| 石景山区| 阿克| 海城市| 阳朔县| 榆中县| 哈巴河县| 永康市| 西林县|