描述: 将给定的二叉树,将其变换为源二叉树的镜像
示例1:
输入:
{8,6,10,5,7,9,11}
复制
返回值:
{8,10,6,11,9,7,5}
复制
思路1: 这道题很容易想到用递归的思想将左右子树进行交换,这种思路的空间复杂度和时间复杂度都是O(n)
代码如下
function Mirror( pRoot ) {
// write code here
if(!pRoot){
return;
}
var left = pRoot.left;
pRoot.left = pRoot.right;
pRoot.right = left;
Mirror(pRoot.left);
Mirror(pRoot.right);
return pRoot;
}
思路2: 这是牛客上的思路,感觉现在自己的思维还是没有训练开,不会想着利用这种辅助数据结构来解题
function Mirror( pRoot ) {
// write code here
if(!pRoot){
return pRoot;
}
var stack = [];
stack.push(pRoot);
while(stack.length!==0){
var node = stack.pop();
if(node.left !== null){
stack.push(node.left);
}
if(node.right !== null){
stack.push(node.right);
}
var temp = node.left;
node.left = node.right;
node.right = temp;
}
return pRoot;
}