题解 | #二叉树的镜像#
二叉树的镜像
http://www.nowcoder.com/practice/a9d0ecbacef9410ca97463e4a5c83be7
1. python3 解法: dfs遍历的同时交换,使用了一个栈没有递归
# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param pRoot TreeNode类 # @return TreeNode类 # class Solution: def Mirror(self , pRoot ): # write code here if pRoot == None: return None node_list = [] node_list.append(pRoot) while node_list: node = node_list.pop() left = node.left node.left = node.right node.right = left if node.left: node_list.append(node.left) if node.right: node_list.append(node.right) return pRoot2. java解法: 递归
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pRoot TreeNode类
* @return TreeNode类
*/
public TreeNode Mirror (TreeNode pRoot) {
// write code here
if(pRoot==null){
return pRoot;
}
TreeNode left = pRoot.left;
pRoot.left = pRoot.right;
pRoot.right = left;
Mirror(pRoot.left);
Mirror(pRoot.right);
return pRoot;
}
}
3. go解法 递归。用递归是因为go的栈得自己造。。
package main
import . "nc_tools"
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pRoot TreeNode类
* @return TreeNode类
*/
func Mirror( pRoot *TreeNode ) *TreeNode {
// write code here
if pRoot == nil{
return pRoot
}
left := pRoot.Left
pRoot.Left = pRoot.Right
pRoot.Right = left
Mirror(pRoot.Left)
Mirror(pRoot.Right)
return pRoot
}



巨人网络公司福利 91人发布