面試題27 二叉樹的映象

2021-08-29 03:53:11 字數 1091 閱讀 9903

一、題目

請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。

二、關鍵

三、解釋

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 迴圈的想法,用佇列暫存左右...