剑指 Offer 55 - I. 二叉树的深度
class Solution {
public int maxDepth(TreeNode root) {
if(root == null) {
return 0;
}
return 1 + Math.max(maxDepth(root.left),maxDepth(root.right));
}
}
运行截图:
力扣236.二叉树的最近公共祖先
class Solution {
TreeNode lca;
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if (root == null) {
return null;
}
find(root,p,q);
return lca;
}
private boolean find(TreeNode root, TreeNode p, TreeNode q) {
if (root == null) {
return false;
}
int left = find(root.left,p,q) ? 1 : 0;
int right = find(root.right,p,q) ? 1 : 0;
int mid = (root == p || root == q) ? 1 : 0;
if (left + right + mid == 2) {
lca = root;
return true;
}
return (left + right + mid) > 0;
}
}
运行截图:
力扣606. 根据二叉树创建字符串
class Solution {
StringBuilder sb = new StringBuilder();
public String tree2str(TreeNode root) {
if(root == null) {
return " ";
}
preOrder(root);
return sb.toString();
}
private void preOrder(TreeNode root) {
if(root == null) {
return;
}
sb.append(root.val);
if(root.left != null) {
sb.append("(");
preOrder(root.left);
sb.append(")");
} else {
if(root.right != null) {
sb.append("()");
}
}
if(root.right != null) {
sb.append("(");
preOrder(root.right);
sb.append(")");
}
}
}
运行截图: