题目:leetcode226. 翻转二叉树
描述
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
思路
首先可以使用两种方法,递归法和层次遍历法。翻转二叉树,其实就是将二叉树的每个结点的左右结点对换。
代码
递归法
public class Solution {
public TreeNode invertTree(TreeNode root) {
if(root==null)
return root;
TreeNode t=root.left;
root.left=root.right;
root.right=t;
invertTree(root.left);
invertTree(root.right);
return root;
}
}
层次遍历法
import java.util.Deque;
import java.util.LinkedList;
public class Solution {
public TreeNode invertTree(TreeNode root) {
if(root==null)
return root;
Deque<TreeNode> deque=new LinkedList<>();
int length;
deque.offer(root);
while(!deque.isEmpty())
{
length=deque.size();
TreeNode t;
while(length>0)
{
TreeNode node=deque.poll();
if(node.left!=null)
deque.offer(node.left);
if(node.right!=null)
deque.offer(node.right);
t=node.left;
node.left=node.right;
node.right=t;
length--;
}
}
return root;
}
}