《剑指Offer》题目:二叉树的镜像

题目描述:请完成一个函数,输入一个二叉树,该函数输出它的镜像

题目分析:先前序遍历这棵树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点。当交换完所有非叶子结点的左右子结点之后,就得到了树的镜像。

Java代码:

class TreeNode{
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x){
            val = x ;
        }
}
public class MirrorBinaryTree {
    public void Mirror(TreeNode root) {
        TreeNode tempNode;
        if (root == null){
            return;
        }
        if (root.left == null && root.right == null) return;

        tempNode = root.left;
        root.left = root.right;
        root.right = tempNode;
        if (root.left!=null) Mirror(root.left);
        if (root.right!=null) Mirror(root.right);
    }
时间: 2024-10-27 13:22:02

《剑指Offer》题目:二叉树的镜像的相关文章

【剑指offer】二叉树的镜像

转载请注明出处:http://blog.csdn.net/ns_code/article/details/25915971 题目描述: 输入一个二叉树,输出其镜像. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000,n代表将要输入的二叉树节点的个数(节点从1开始编号).接下来一行有n个数字,代表第i个二叉树节点的元素的值.接下来有n行,每行有一个字母Ci.Ci='d'表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号.C

剑指OFFER之二叉树的镜像(九度OJ1521)

题目描述: 输入一个二叉树,输出其镜像. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000,n代表将要输入的二叉树节点的个数(节点从1开始编号).接下来一行有n个数字,代表第i个二叉树节点的元素的值.接下来有n行,每行有一个字母Ci.Ci='d'表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号.Ci='l'表示第i个节点有一个左孩子,紧接着是左孩子的编号.Ci='r'表示第i个节点有一个右孩子,紧接着是右孩子的编号.C

剑指Offer 18. 二叉树的镜像 (二叉树)

题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / 6 10 / \ / 5 7 9 11 镜像二叉树 8 / 10 6 / \ / 11 9 7 5 题目地址 https://www.nowcoder.com/practice/564f4c26aa584921bc75623e48ca3011?tpId=13&tqId=11171&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-i

剑指offer:二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像.输入描述:二叉树的镜像定义:```源二叉树 8/ \6 10/ \ / \5 7 9 11镜像二叉树8/ \10 6/ \ / \11 9 7 5 class TreeNode:def init(self, x):self.val = xself.left = Noneself.right = None class Solution: 返回镜像树的根节点 def Mirror(self, root): if not root: return N

剑指OFFER之二叉树的镜像

题目描述: 输入一个二叉树,输出其镜像. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000,n代表将要输入的二叉树节点的个数(节点从1开始编号).接下来一行有n个数字,代表第i个二叉树节点的元素的值.接下来有n行,每行有一个字母Ci.Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号.Ci=’l’表示第i个节点有一个左孩子,紧接着是左孩子的编号.Ci=’r’表示第i个节点有一个右孩子,紧接着是右孩子的编号.C

[剑指Offer] 18.二叉树的镜像

[思路1]递归,所有孩子交换再分别递归左右子树 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *right; 6 TreeNode(int x) : 7 val(x), left(NULL), right(NULL) { 8 } 9 };*/ 10 class Solution { 11 public: 12 void Mirror(TreeNode *pRoot) { 13 if(p

。。。剑指Offer之——二叉树的镜像。。。

1 public void Mirror(TreeNode root) { 2 // 如果根节点为空,则直接返回 3 if (root == null) { 4 return; 5 } 6 // 如果根节点两边都为空,则直接返回 7 if (root.left == null && root.right == null) { 8 return; 9 } 10 // 交换左右子树 11 TreeNode temp = root.left; 12 root.left = root.right;

剑指offer (19) 二叉树镜像 对称二叉树

题目: 输入一个二叉树,输出其镜像. BinTreeNode* ReverseTree(BinTreeNode* pRoot) { if (pRoot == NULL) return NULL; BinTreeNode* pLeftReverse = ReverseTree(pRoot->left); BinTreeNode* pRightReverse = ReverseTree(pRoot->right); pRoot->left = pRightReverse; pRoot->

剑指 Offer 题目汇总索引

剑指 Offer 总目录:(共50道大题) 1. 赋值运算符函数(或应说复制拷贝函数问题) 2. 实现 Singleton 模式 (C#) 3.二维数组中的查找 4.替换空格               时间:O(n) 空间:O(1) 5.从尾到头打印链表 6. 重建二叉树          && 二叉树的各种遍历(BFS,DFS,DLR,LDR,LRD) 7.用两个栈实现队列 8.旋转数组的最小数字 9.斐波那契数列第 n 项        时间O(lgn) 10.一个整数的二进制表示中

剑指 Offer 题目索引

剑指 Offer 总目录:(共50道大题) 1. 赋值运算符函数(或应说复制拷贝函数问题) 2. 实现 Singleton 模式 (C#) 3.二维数组中的查找 4.替换空格               时间:O(n) 空间:O(1) 5.从尾到头打印链表 6. 重建二叉树          && 二叉树的各种遍历(BFS,DFS,DLR,LDR,LRD) 7.用两个栈实现队列 8.旋转数组的最小数字 9.斐波那契数列第 n 项        时间O(lgn) 10.一个整数的二进制表示中