一、題目
請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。
二、關鍵
三、解釋
1.解題思路:先前序遍歷這棵樹的所有節點,如果遍歷到的節點有子節點,就交換它的兩個子節點。當交換完所有非葉節點的左、右節點之後,就得到了樹的映象。
2.(尚未證明)解題思路二:直接前序遍歷,不過先遍歷右邊的,再遍歷左邊的;交換正常的前序遍歷中的後面兩步。
四、**
#include #include "..\utilities\binarytree.h"
#include void mirrorrecursively(binarytreenode *pnode)
void mirroriteratively(binarytreenode* proot)
}// ********************測試**********************
// 測試完全二叉樹:除了葉子節點,其他節點都有兩個子節點
// 8
// 6 10
// 5 7 9 11
void test1()
// 測試二叉樹:出葉子結點之外,左右的結點都有且只有乙個左子結點
// 8
// 7
// 6
// 5
// 4
void test2()
// 測試二叉樹:出葉子結點之外,左右的結點都有且只有乙個右子結點
// 8
// 7
// 6
// 5
// 4
void test3()
// 測試空二叉樹:根結點為空指標
void test4()
// 測試只有乙個結點的二叉樹
void test5()
int main(int argc, char* argv)
面試題27 二叉樹的映象
面試題27 二叉樹的映象 題目 操作給定的二叉樹,將其變換為源二叉樹的映象。思路 1 找到不為空的節點。2 然後交換左右節點。3 遞迴呼叫此函式 classtreenode3 publicclassno27mirror publicvoidmirror treenode3 root if root ...
面試題27 二叉樹的映象
題目描述 操作給定的二叉樹,將其變換為源二叉樹的映象。解題思路 先前序遍歷這棵樹的每個結點,如果遍歷到的結點有子結點,就交換它的兩個子節點,當交換完所有的非葉子結點的左右子結點之後,就得到了樹的映象 純前序遍歷的遞迴 class solution 遞迴的另一種表達方式 struct treenode...
面試題27 二叉樹的映象
操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5考察點 數的遍歷演算法 畫 決抽象問題 遞迴運用。思路1 樹的問題用遞迴解決 易懂,清晰。class solution 思路2 迴圈的想法,用佇列暫存左右...