首页 > 剑指offer:面试题27. 二叉树的镜像

剑指offer:面试题27. 二叉树的镜像

题目:二叉树的镜像

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

例如输入:

     4

   /   

  2     7

 /   /

1   3 6   9

镜像输出:

     4

   /   

  7     2

 /   /

9   6 3   1

示例 1:

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

限制:

0 <= 节点个数 <= 1000

解题:

方法一:递归

先定义一个递归出口:当递归到null节点时,直接返回null。接着如果当前节点不是null节点,则其左右孩子调换。最后继续递归下去。解题思想是只考虑当前层孩子的调换,不用考虑下面层的事情。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/class Solution {public:TreeNode* mirrorTree(TreeNode* root) {if(root == nullptr) return nullptr;TreeNode* temp = root->left;root->left = root->right;root->right = temp;mirrorTree(root->left);mirrorTree(root->right);return root;}
};

方法二:栈

class Solution {
public:TreeNode* mirrorTree(TreeNode* root) {stack s;s.push(root);while (!s.empty()) {TreeNode* node = s.top();s.pop();if (node == NULL) {continue;}swap(node->left, node->right);s.push(node->left); s.push(node->right);}return root;}
};

 

更多相关:

  • 题目:从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如: 给定二叉树: [3,9,20,null,null,15,7],     3    /   9  20     /      15   7 返回其层次遍历结果: [   [3],   [9,20],   [...

  • 题目:对称的二叉树 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。     1    /   2   2  / / 3  4 4  3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:...

  • 题目:树的子结构 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A:      3     /    4   5   /  1   2 给定的树 B:    4    /  1 返回 true,因为 B...

  • 下面是树类型题目需要用到的头文件tree.h,请包含在cpp文件中编译,而不是放在c文件中编译,比如查找树中两个节点的最低公共父结点的题common_parent_in_tree.cpp,编译它的方法是: g++ -g common_parent_in_tree.cpp -o common_parent_in_tree 下...

  •   a.需求分析:   自动生成小学四则运算题目的命令行 “软件”,满足以下需求:    除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24运算符为 +, −, ×, ÷并且要求能处理用户的输入,并判断对错,打分统计正确率。要求能处理用户输入的真分数, 如 1/2, 5/12 等使用 -n 参...

  • 2. Stochastic Finite Horizon Problem 在这一节中主要介绍了随机DP算法来解决不确定性下的有限地范围问题,如Denition 1.4所述,它被表述为一个组合优化问题。众所周知,由于组合爆炸,它是一个极其困难的问题。为了从结构上缓解这种极端的复杂性,一种方法是对所有决策规则的空间进行建模,这样就可以在...

  • 先上实现了的C++代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn = 100; 7 int a[maxn],...