二叉树反转

二叉树反转,递归实现比较简单,只需要交换父母节点的左右子节点就行,递归反转左右子节点。

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                                                                                    

树的结构如下:
二叉树反转_第1张图片

代码链接:https://github.com/lilingyu/btreeInversion

你可能感兴趣的:(面试,二叉树,C语言)