91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-09-01 13:02:12 來源:腳本之家 閱讀:117 作者:lqh 欄目:編程語言

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

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

遞歸的思想是:

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

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); 
} 

非遞歸實現思想:

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

下面是非遞歸實現代碼:

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); 
  } 
} 

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丽水市| 芦溪县| 梅河口市| 阿克苏市| 盐山县| 正蓝旗| 龙胜| 上思县| 合肥市| 甘洛县| 万年县| 仁寿县| 扎兰屯市| 姜堰市| 新竹市| 鹤岗市| 濮阳市| 丁青县| 阿坝县| 澳门| 塔河县| 永清县| 绥棱县| 海城市| 宁城县| 哈尔滨市| 平度市| 吉水县| 林口县| 三河市| 金塔县| 城口县| 竹溪县| 武川县| 安康市| 乐山市| 金溪县| 扶风县| 右玉县| 沙田区| 洪泽县|