关于二叉树的遍历,以下选项中描述错误的是,二叉树模型例题及答案
进入一个二叉树并把它转换成它的镜像。
样品
输入树:
八
/\
6 10
/\/\
5 7 9 11
[8,6,10,5,7,9,11,空,空,空,空,空,空,空]
输出树:
八
/\
10 6
/\/\
11 9 7 5
[8,10,6,11,9,7,5,空,空,空,空]思路(二叉树,递归)
仔细观察原始树和镜子后的树:
原始树:
八
/
6 10
/\ /
5 7 9 11
镜像后的树:
八
/
10 6
/\ /
11 9 7 5
我们可以发现镜像树是把原树所有节点的左右子互换!
所以我们递归地遍历原始树的所有节点,并交换每个节点的左右子节点。
时间复杂度
原树只遍历一次,所以时间复杂度为。
代码/* *
*二叉树节点的定义。
*结构树节点{
* int val
* TreeNode * left
* TreeNode * right
* TreeNode(int x) : val(x),left(NULL),right(NULL) {}
* };
*/
类别解决方案{
公共:
空镜像(TreeNode* root) {
如果(!root)返回;//递归边界
swap(根左,根右);//交换当前根节点的左右节点
镜像(根-左);//递归左子树
镜像(根-右);//递归右子树
}
};
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。