二叉树反转,递归实现比较简单,只需要交换父母节点的左右子节点就行,递归反转左右子节点。
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
树的结构如下: