二叉树的基本操作
2022/9/10 23:23:31
本文主要是介绍二叉树的基本操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
二叉树的创建,前序、中序、后序遍历。看了网上的写法后,我之前用c 语言写过链表、栈和队列,受到指针的启发,在java中我用引用改写了下二叉树的遍历过程。
代码如下:
1 import java.util.Objects; 2 3 public class Main { 4 public static void main(String[] args) { 5 //创建节点 6 Node rootNode = new Node(); 7 rootNode.setData("唐僧"); 8 rootNode.setNo(1); 9 Node node1 = new Node(); 10 node1.setData("孙悟空"); 11 node1.setNo(2); 12 Node node2 = new Node(); 13 node2.setData("猪八戒"); 14 node2.setNo(3); 15 Node node3 = new Node(); 16 node3.setData("沙和尚"); 17 node3.setNo(4); 18 Node node4 = new Node(); 19 node4.setNo(5); 20 node4.setData("白龙马"); 21 //挂数据 22 rootNode.setLeftNode(node1); 23 rootNode.setRightNode(node2); 24 node2.setRightNode(node3); 25 node2.setLeftNode(node4); 26 //打印输出 27 BinaryTree tree = new BinaryTree(); 28 System.out.println("前序遍历"); 29 tree.preOrder(rootNode); 30 System.out.println("中序遍历"); 31 tree.middleOrder(rootNode); 32 System.out.println("后序遍历"); 33 tree.backOrder(rootNode); 34 } 35 36 } 37 class BinaryTree { 38 39 //前序遍历 父的先后 40 public void preOrder(Node node) { 41 System.out.println(node.toString()); 42 if(Objects.nonNull(node.getLeftNode())) { 43 preOrder(node.getLeftNode()); 44 } 45 if(Objects.nonNull(node.getRightNode())) { 46 preOrder(node.getRightNode()); 47 } 48 } 49 public void middleOrder(Node node) { 50 if(Objects.nonNull(node.getLeftNode())) { 51 middleOrder(node.getLeftNode()); 52 } 53 System.out.println(node.toString()); 54 if(Objects.nonNull(node.getRightNode())) { 55 middleOrder(node.getRightNode()); 56 } 57 } 58 public void backOrder(Node node) { 59 60 if(Objects.nonNull(node.getLeftNode())) { 61 backOrder(node.getLeftNode()); 62 } 63 if(Objects.nonNull(node.getRightNode())) { 64 backOrder(node.getRightNode()); 65 } 66 System.out.println(node.toString()); 67 } 68 } 69 70 //定义节点结构 71 class Node { 72 private Node leftNode; 73 private Node rightNode; 74 private String data; 75 private int no; 76 77 public int getNo() { 78 return no; 79 } 80 81 public void setNo(int no) { 82 this.no = no; 83 } 84 85 86 87 88 public Node getLeftNode() { 89 return leftNode; 90 } 91 92 public void setLeftNode(Node leftNode) { 93 this.leftNode = leftNode; 94 } 95 96 public Node getRightNode() { 97 return rightNode; 98 } 99 100 public void setRightNode(Node rightNode) { 101 this.rightNode = rightNode; 102 } 103 104 public String getData() { 105 return data; 106 } 107 108 public void setData(String data) { 109 this.data = data; 110 } 111 112 @Override 113 public String toString() { 114 return "Node{" + 115 "data='" + data + '\'' + 116 ", no=" + no + 117 '}'; 118 } 119 }
这篇关于二叉树的基本操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行
- 2024-05-08阿里云域名注册流程,分享给第一次购买域名的新手站长!