二叉樹反轉,遞歸實現比較簡單,只需要交換父母節點的左右子節點就行,遞歸反轉左右子節點。
homebrew作者面試google時解不出這道題而被拒,本文給出c實現的二叉樹反轉,包括前中後遍歷,二叉樹的創建等。
反轉代碼如下:
void inverseBtree(tnode* root)
{
if (NULL==root) {
return;
}
tnode* tmp=root->left;
root->left=root->right;
root->right = tmp;
inverseBtree(root->left);
inverseBtree(root->right);
}
示例輸入輸出如下:
1
2
3
-1
4
-1
5
-1
6
7
-1
-1
8
-1
-1
-1
-1
12345678
34576821
78654321
******
12345687
12867543
87654321
樹的結構如下: