二叉樹的映象:將乙個二叉樹的左右子樹,調換位置。即下圖的形式:
遞迴的思想是:
從根節點的左右子樹進行交換,然後以根節點的左子樹為根節點,而後以根節點的右結點為根節點,進行左右子樹交換。遇到空節點或葉節點直接返回。下面求二叉樹映象的函式**實現:
templatevoid mirrotree(treenode* root)
mirrotree(root->_left);
mirrotree(root->_right);
}
非遞迴實現思想:利用stack棧的filo,即先進後出原則,將根節點先行壓入棧中,然後進入棧同時取棧頂結點並pop棧,然後交換左右子樹的結點,若根節點的左右子樹不為空,即壓入棧中,直到棧為空則停止。下面是非遞迴實現**:
templatevoid mirrotree_nor(treenode* root)
if (top->_left != null)
s.push(top->_left);
if (top->_right != null)
s.push(top->_right);
}}
二叉樹 27題 二叉樹的映象
請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。例如輸入 4 2 7 1 3 6 9 映象輸出 4 7 2 9 6 3 1 示例1 輸入 root 4,2,7,1,3,6,9 輸出 4,7,2,9,6,3,1 限制 0 節點個數 1000根據二叉樹映象的定義,考慮遞迴遍歷 dfs 二叉樹,交換每...
二叉樹12 二叉樹的映象
題目 操作給定的二叉樹,將其變換為源二叉樹的映象。輸入描述 思路 首先要理解業務邏輯,何為映象?所謂映象就是對於任何乙個結點,將其左右子樹進行交換即可。對於一棵以root為根結點的二叉樹,要將其映象,首先將其左右子樹 root.left為根的子樹 和 root.right為根的子樹 進行映象,然後將...
二叉樹的深度,平衡二叉樹,二叉樹的映象
輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。實現,遞迴遍歷二叉樹的左子樹,右子樹,取子樹深度大值,再加上子樹與根節點的距離1,即為這顆二叉樹的深度 classsolution 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。平...