package com.lz.second;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class BinaryTree {
public static class TreeNode{
int val;
TreeNode left;
TreeNode right;
int deep;
TreeNode(int val,TreeNode left,TreeNode right){
this.val=val;
this.left=left;
this.right=right;
}
}
private static List<Integer> list=new ArrayList<>();
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeNode node7 = new TreeNode(7,null,null);
TreeNode node6 = new TreeNode(6,null,null);
TreeNode node5 = new TreeNode(5,node6,node7);
TreeNode node4 = new TreeNode(4,null,null);
TreeNode node3 = new TreeNode(3,null,null);
TreeNode node2 = new TreeNode(2,node4,node5);
TreeNode node1 = new TreeNode(1,node2,node3);
//preorder(node1);
//inorder(node1);
//postorder(node1);
levelorder(node1,1);
System.out.println(Arrays.toString(list.toArray()));
}
/**
1
2 3
4 5
6 7
*/
//前序144
public static void preorder(TreeNode root) {
if(root==null) {
return;
}
System.out.println(root.val);//第一次成为栈顶元素打印
preorder(root.left);
preorder(root.right);
}
//中序
public static void inorder(TreeNode root) {
if(root==null) {
return;
}
inorder(root.left);
System.out.println(root.val);//第二次成为栈顶元素打印
inorder(root.right);
}
//后序
public static void postorder(TreeNode root) {
if(root==null) {
return;
}
postorder(root.left);
postorder(root.right);
System.out.println(root.val);//第三次成为栈顶元素打印
}
//层序遍历
public static void levelorder(TreeNode root,int i) {
if(root==null) {
return;
}
int length=list.size();
if(length<=i) {
for(int j=0;j<=i-length;j++) {
list.add(length+j,null);
}
}
list.set(i,root.val);
levelorder(root.left,2*i);
levelorder(root.right,2*i+1);
}
}
leetcode:二叉树遍历(递归)
最新推荐文章于 2022-12-09 10:16:50 发布