深色模式
BM33 二叉树的镜像
描述
操作给定的二叉树,将其变换为源二叉树的镜像。
数据范围:二叉树的节点数 0 \le n \le 10000≤n≤1000 , 二叉树每个节点的值 0\le val \le 10000≤val≤1000
要求: 空间复杂度 O(n) 。本题也有原地操作,即空间复杂度 O(1)的解法,时间复杂度 O(n)
比如:
源二叉树
镜像二叉树
题解
先序遍历树,交换每个节点的左右子树, 空间复杂度: O(1), 时间复杂度 O(n)
ts
/*class TreeNode {
* val: number
* left: TreeNode | null
* right: TreeNode | null
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pRoot TreeNode类
* @return TreeNode类
*/
export function Mirror(pRoot: TreeNode): TreeNode {
// write code here
var p = new TreeNode(-1, null, null);
if(!pRoot) return pRoot;
var stack: TreeNode[] = [pRoot];
while(stack.length) {
var node = stack.pop();
// 交换当前节点的左右子节点
p.left = node.left;
node.left = node.right;
node.right = p.left;
if(node.right) stack.push(node.right);
if(node.left) stack.push(node.left);
}
return pRoot;
}