1:建树
static class TreeNode{
TreeNode left;
TreeNode right;
int val;
public TreeNode(int val){
this.val=val;
}
}
普通递归在节点a插入节点b
public static void insert1(int a,int b,TreeNode root){
if(root!=null){
if(root.val==a){
if(root.left==null){
root.left=new TreeNode(b);
return;
}
else {
root.right=new TreeNode(b);
return;
}
}
insert1(a,b,root.left);
insert1(a,b,root.right);
}
}
搜索树类型插入:左节点小于父节点,右节点大于父节点
public static void insert(Comparable<Integer> date,TreeNode root){
TreeNode Node=new TreeNode((Integer) date);
if(date.compareTo(root.val)<0){
if(root.left==null){
root.left=Node;
}else {
insert(date,root.left);
}
}
else {
if(root.right==null){
root.right=Node;
}
else {
insert(date,root.right);
}
}
}
层次遍历:
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> lists=new ArrayList<>();
if (root == null) {
return lists;
}
List<TreeNode> listnode=new ArrayList<>();
listnode.add(root);
while (!listnode.isEmpty()){
int size=listnode.size();
List<Integer> list=new ArrayList<>();
for(int i=0;i<size;i++){
TreeNode remove = listnode.remove(0);
list.add(remove.val);
if(remove.left!=null){
listnode.add(remove.left);
}
if(remove.right!=null){
listnode.add(remove.right);
}
}
lists.add(list);
}
return lists;
}
自己组装吧!