题目:给你一棵二叉树的根节点 root
,翻转这棵二叉树,并返回其根节点。
思路一:递归法。
代码:
public TreeNode invertTree(TreeNode root) {
if(root==null)
return root;
invertTree(root.left);
invertTree(root.right);
TreeNode tmp=root.left;
root.left=root.right;
root.right=tmp;
return root;
}
思路二:迭代法。
代码:
public TreeNode invertTree(TreeNode root) {
if(root==null)
return root;
Queue<TreeNode> queue=new LinkedList<TreeNode>();
queue.offer(root);
while(!queue.isEmpty()){
int len=queue.size();
while(len>0){
TreeNode node=queue.poll();
swap(node);
if(node.left!=null) queue.offer(node.left);
if(node.right!=null) queue.offer(node.right);
len--;
}
}
return root;
}
public void swap(TreeNode node){
TreeNode tmp=node.left;
node.left=node.right;
node.right=tmp;
}