156.上下翻转二叉树

1. 题目

给定一个二叉树,其中所有的右节点要么是具有兄弟节点(拥有相同父节点的左节点)的叶节点,要么为空
将此二叉树上下翻转并将它变成一棵树, 原来的右节点将转换成左叶节点。返回新的根。

2. 解题

前序遍历或者后序遍历

3. 代码

TreeNode* upsideDown(TreeNode* root) {
        if(!root || !root->left) return root;
        TreeNode* l = root->left;//左右子节点存取来
        TreeNode* r = root->right;
        root->left = NULL;//上下断开
        root->right = NULL;
        TreeNode* p = upsideDown(l);//根节点
        l->left = r;//跟上面连接起来
        l->right = root;
        return p;
}
原文地址:https://www.cnblogs.com/mo-jian-ming/p/14551081.html