手写二叉树遍历
public class TreeNode{ public int data; public TreeNode leftChild; public TreeNode rightChild; public TreeNode(int data){ this.data = data; } } public class BinaryTree{ TreeNode root; public void insertNode(int data){ root = insert(root,data); } public TreeNode insert(TreeNode node,int data){ if(node == null){ return TreeNode(data); } if(data < node.data){ node.leftChild = insert(node.leftChild,data); } else if(data > node.data){ node.rightChild = insert(node.rightChild,data); }else{ node.data =data; } return node; } public void preTraver(TreeNode node){ if(node == null){ return; } System.out.println(node.data); preTraver(node.leftChild); preTraver(node.rightChild); } public void inTraver(TreeNode node){ if(node == null){ return; } inTraver(node.leftChild); System.out.println(node.data); inTraver(node.rightChild); } public void postTraver(TreeNode node){ if(node == null){ return; } postTraver(node.leftChild); postTraver(node.rightChild); System.out.println(node.data); } public void levelTraver(TreeNode node){ if(node == null){ return; } Queue<TreeNode> queue = new LinkedList<>(); queue.offer(node) while(!queue.isEmpty()){ TreeNode item = queue.poll(); System.out.println(item.data); if(item.leftChild!=null){ queue.offer(item.leftChild); } if(item.rightChild){ queue.offer(item.rightChild); } } } }
本人倡导的讲解方式:代码示例[学以致用,不仅要知道理论,还要知道理论怎么付诸实践],
文字讲解[不仅知道要怎么用,还要知道是怎么回事],
画图讲解[有图有真相,用图的形式将代码嵌入到理论中,整体理解]