1、求二叉树的镜像
最为容易理解的递归代码
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return null;
}
TreeNode left = root.left, right = root.right;
if (root.left != null) {
left = invertTree(root.left);
}
if (root.right != null) {
right = invertTree(root.right);
}
root.right = left;
root.left = right;
return root;
}
public TreeNode invertTree(TreeNode root) {
if (root != null) {
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
invertTree(root.left);
invertTree(root.right);
}
return root;}
非递归的方式进行:
public TreeNode invertTree(TreeNode root) {
int count = 0;
List<TreeNode> list = new ArrayList<>();
list.add(root);
int len = 1;
while (count < len) {
while (count < len) {
TreeNode node = list.get(count);
if (node.left != null) {
list.add(node.left);
}
if (node.right != null) {
list.add(node.right);
}
TreeNode temp = node.left;
node.left = node.right;
node.right = temp;
count++;
}
len = list.size();
}
return root;
}
总体来说,这个很简单,不多说了。