二叉树简单题|对称、翻转、合并二叉树
模板代码
private boolean process(TreeNode p, TreeNode q) {
if (p == null && q == null) {
return ;
} else if (p == null && q != null) {
return ;
} else if (p != null && q == null) {
return ;
} else {
return ;
}
}
101 对称二叉树
public class $101 {
public boolean isSymmetric(TreeNode root) {
if (root == null) {
return false;
}
return process(root.left, root.right);
}
private boolean process(TreeNode p, TreeNode q) {
if (p == null && q == null) {
return true;
} else if (p == null && q != null) {
return false;
} else if (p != null && q == null) {
return false;
} else {
return p.val == q.val && process(p.left, q.right) && process(p.right, q.left);
}
}
}
226 翻转二叉树
import java.util.LinkedList;
import java.util.List;
public class $226 {
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return null;
}
return process(root);
}
private TreeNode process(TreeNode root) {
if (root.left == null && root.right == null) {
return root;
} else if (root.left == null && root.right != null) {
TreeNode rigRes = process(root.right);
root.left = rigRes;
root.right = null;
return root;
} else if (root.left != null && root.right == null) {
TreeNode lefRes = process(root.left);
root.right = lefRes;
root.left = null;
return root;
} else {
TreeNode lefRes = process(root.left);
TreeNode rigRes = process(root.right);
root.left = rigRes;
root.right = lefRes;
return root;
}
}
}
617 合并二叉树
public class $617 {
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
return process(root1, root2);
}
private TreeNode process(TreeNode p, TreeNode q) {
if (p == null && q == null) {
return null;
} else if (p == null && q != null) {
return q;
} else if (p != null && q == null) {
return p;
} else {
TreeNode node = new TreeNode(p.val + q.val);
node.left = process(p.left, q.left);
node.right = process(p.right, q.right);
return node;
}
}
}