二叉树(前序遍历、中序遍历、后序遍历、层次遍历)
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class PreTraversal{
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型一维数组
*/
public int[] preorderTraversal (TreeNode root) {
List<Integer> arr = new ArrayList<>();
preorder(root,arr);
int[] temp = new int[arr.size()];
for(int i = 0;i<arr.size();i++){
temp[i] = arr.get(i);
}
return temp;
}
//前序遍历 值-->左-->右
public void preorder(TreeNode root,List<Integer> list){
if(root == null) return;
list.add(root.val);
preorder(root.left,list);
preorder(root.right,list);
}
}
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型一维数组
*/
public int[] inorderTraversal (TreeNode root) {
List<Integer> arr = new ArrayList<>();
inorder(root,arr);
int[] temp = new int[arr.size()];
for(int i = 0;i<arr.size();i++){
temp[i] = arr.get(i);
}
// write code here
return temp;
}
//中序遍历 左->值->右
public void inorder(TreeNode root,List<Integer> list){
if(root == null) return;
inorder(root.left,list);
list.add(root.val);
inorder(root.right,list);
}
}
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型一维数组
*/
public int[] postorderTraversal (TreeNode root) {
// write code here
List<Integer> arr = new ArrayList<>();
postoder(arr,root);
int[] temp = new int[arr.size()];
for(int i=0;i<arr.size();i++){
temp[i] = arr.get(i);
}
return temp;
}
//左->右->取值
public void postoder(List<Integer> list,TreeNode root){
if(root == null) return;
postoder(list,root.left);
postoder(list,root.right);
list.add(root.val);
}
}
public int[] levelTraversal(TreeNode root){
if(root == null) return null;
Queue<TreeNode> q = new LinkedList<>();
List<Integer> list = new ArrayList<>();
q.offer(root);
list.add(root.val);
while(!q.isEmpty()){
int n = q.size();
for(int i = 0; i < n ; i++){
TreeNode node = q.poll(); //取出节点
list.add(node.val);
if(node.left != null){
q.offer(node.left);
}
if(node.right != null){
q.offer(node.right);
}
}
}
int[] arr = new int[list.size()];
for(int i=0;i<list.size();i++){
arr[i] = list.get(i);
}
return arr;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言