翻转二叉树(简单)
2020年6月1日
题目来源:力扣
解题
递归
深度遍历节点,交换两个子节点的内容
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root==null) return root;
TreeNode r=invertTree(root.right);
TreeNode l=invertTree(root.left);
root.left=r;
root.right=l;
return root;
}
}
迭代
二叉树的迭代经常使用队列,节点入队列,把节点的两个子节点交换后,再把两个子节点入队列
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root==null) return root;
Queue<TreeNode> q=new LinkedList<>();
q.add(root);
while(!q.isEmpty()){
TreeNode cur=q.poll();
TreeNode tmp=cur.left;
cur.left=cur.right;
cur.right=tmp;
if(cur.left!=null) q.add(cur.left);
if(cur.right!=null) q.add(cur.right);
}
return root;
}
}