二叉树的前序,中序,后序,顺序遍历
实体类:
package com.test.知识点.数据结构.树.二叉树; import lombok.Data; /** * Created by Administrator on 2023/2/28. */ @Data public class BinaryTree { private Integer value; public BinaryTree(Integer value){ this.value = value; } private BinaryTree leftNode; private BinaryTree rightNode; }
测试类:
package com.test.知识点.数据结构.树.二叉树; import java.util.ArrayList; import java.util.List; /** * 二叉树的遍历(前中后序) * Created by Administrator on 2023/2/28. */ public class Test { public static void main(String[] args) { BinaryTree root = new BinaryTree(0); BinaryTree _1lnode = new BinaryTree(1); BinaryTree _1rnode = new BinaryTree(2); root.setLeftNode(_1lnode); root.setRightNode(_1rnode); BinaryTree _1l_2lnode = new BinaryTree(3); BinaryTree _1l_2rnode = new BinaryTree(4); BinaryTree _1r_2lnode = new BinaryTree(5); BinaryTree _1r_2rnode = new BinaryTree(6); _1lnode.setLeftNode(_1l_2lnode); _1lnode.setRightNode(_1l_2rnode); _1rnode.setLeftNode(_1r_2lnode); _1rnode.setRightNode(_1r_2rnode); System.out.println(); System.out.println("前序遍历:"); preSearch(root); System.out.println(); System.out.println("中序遍历:"); midSearch(root); System.out.println(); System.out.println("后序遍历:"); behindSearch(root); System.out.println(); System.out.println("顺序遍历:"); normalSearch(root); System.out.println(); } /** * 0 * 1 2 * 3 4 5 6 * 前序:0134256 * 中序:3140526 * 后序:341 562 0 * 顺序遍历:0123456 */ /** * 顺序遍历 * @param node * @return void */ private static void normalSearch(BinaryTree node) { System.out.print(node.getValue()); List<BinaryTree> nodeList = new ArrayList<>(); nodeList.add(node.getLeftNode()); nodeList.add(node.getRightNode()); search(nodeList); } private static void search(List<BinaryTree> nodeList) { List<BinaryTree> nodeListSub = new ArrayList<>(); for(BinaryTree node : nodeList){ if(node != null){ System.out.print(node.getValue()); nodeListSub.add(node.getLeftNode()); nodeListSub.add(node.getRightNode()); } } if(nodeListSub.size() > 0){ search(nodeListSub); } } /** * 后序:左右根 * @param node * @return void */ private static void behindSearch(BinaryTree node) { if(node != null){ behindSearch(node.getLeftNode()); behindSearch(node.getRightNode()); System.out.print(node.getValue()); } } /** * 中序,左根右 * @param node * @return void */ private static void midSearch(BinaryTree node) { if(node != null){ midSearch(node.getLeftNode()); System.out.print(node.getValue()); midSearch(node.getRightNode()); } } /** * 前序,根左右 * @param node * @return void */ private static void preSearch(BinaryTree node) { if(node != null){ System.out.print(node.getValue()); preSearch(node.getLeftNode()); preSearch(node.getRightNode()); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2018-02-28 @JsonInclude(Include.NON_NULL)
2018-02-28 mybatis的sql中字段两种映射(映射到实体)方式