请完成一个函数,输入一个二叉树,该函数输出它的镜像。
例如输入:
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