题目描述:Invert a binary tree.
4
/ \
2 7
/ \ / \
1 3 6 9
to
4
/ \
7 2
/ \ / \
9 6 3 1
解题思路1:将一个二叉树的左右子树逆转。通过层序遍历将二叉树的节点放入队列中,并通过出队来交换该节点的左右子树
public TreeNode invertTree(TreeNode root) {
//level order traversal
if(root==null){
return null;
}
Queue<TreeNode> queue=new LinkedList<>();
//将root节点存放到队列中
queue.offer(root);
while(!queue.isEmpty()){
//从队列中获取一个节点
TreeNode node=queue.poll();
TreeNode temp=node.left;
node.left=node.right;
node.right=temp;
if(node.left!=null){
queue.offer(node.left);
}
if(node.right!=null){
queue.offer(node.right);
}
}
return root;
}
解题思路2:先序遍历,交换左右两个节点。
public TreeNode invertTree(TreeNode root) {
if(root==null)return null;
if(root.left==null&&root.right==null)return null;
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
if(root.left!=null)invertTree(root.left);
if(root.right!=null)invertTree(root.right);
return root;
}