题目一
解法
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isValidBST(TreeNode root) {
return method(root,null,null);
}
public boolean method(TreeNode root,TreeNode min,TreeNode max){
if(root==null) return true;
if(min!=null&&root.val<=min.val) return false;
if(max!=null&&root.val>=max.val) return false;
return method(root.left,min,root)&&method(root.right,root,max);
}
}
题目二
解法
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
List<List<Integer>> list = new ArrayList<List<Integer>>();
public List<List<Integer>> levelOrder(TreeNode root) {
method(root,0);
return list;
}
public void method(TreeNode root,int depth){
if(root==null) return;
if(list.size()==depth){
list.add(new ArrayList<Integer>());
}
list.get(depth).add(root.val);
method(root.left,depth+1);
method(root.right,depth+1);
}
}
题目三
解法
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> children;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
List<List<Integer>> list = new ArrayList<List<Integer>>();
public List<List<Integer>> levelOrder(Node root) {
method(root,0);
return list;
}
void method(Node root,int depth){
if(root==null) return;
if(list.size()==depth){
list.add(new ArrayList<Integer>());
}
list.get(depth).add(root.val);
for(Node n : root.children){
method(n,depth+1);
}
}
}