标签:Node node getRightNode void rootNode 二叉树 基本操作 public
二叉树的创建,前序、中序、后序遍历。看了网上的写法后,我之前用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 }
标签:Node,node,getRightNode,void,rootNode,二叉树,基本操作,public 来源: https://www.cnblogs.com/wangweiip/p/16676681.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。