java实现二叉树的遍历

来源:互联网 发布:怎样抢注域名 编辑:程序博客网 时间:2024/04/30 10:54

今天参加XX公司笔试,考了一道很基础的二叉树遍历的程序题,只可惜是很久以前做的,现在忘得差不多了,笔试完后回来打算重新写一遍二叉树的遍历,于是翻阅了数据结构的书籍,花了二十分钟重新写了二叉树遍历的demo,然后写篇博客加深印象


下面是具体代码

import java.util.ArrayList;//二叉树的遍历public class test {private static int[] arr ={1,2,3,4,5,6,7,8,9};private static ArrayList<Node> arrNode = new ArrayList<Node>();public static void main(String[] args) {// 先把所有数字写成Node对象并放入arrNode数组for(int nodeList=0; nodeList<arr.length;nodeList++){arrNode.add(new Node(arr[nodeList]));}//给Node对象添加左右子树for(int parentIndex=0; parentIndex<arr.length/2-1;parentIndex++){arrNode.get(parentIndex).leftChild = arrNode.get(parentIndex*2+1);arrNode.get(parentIndex).rightChild = arrNode.get(parentIndex*2+2);}//最后一个节点可能没有右子树,所以拿出来单独处理int parentIndex = arr.length/2-1;arrNode.get(parentIndex).leftChild = arrNode.get(parentIndex*2+1);if(arr.length % 2 == 1){arrNode.get(parentIndex).rightChild = arrNode.get(parentIndex*2+2);}System.out.println("先序遍历:");preOrderTraverse(arrNode.get(0));System.out.println();System.out.println("中序遍历:");midOrderTraverse(arrNode.get(0));System.out.println();System.out.println("后序遍历:");postOrderTraverse(arrNode.get(0));}/** * 定义节点类 * @author change100 * */private static class Node{Node leftChild;Node rightChild;int data;Node(int data) {this.data = data;leftChild = null;rightChild = null;}}/** * 先序遍历 * @param node */private static void preOrderTraverse(Node node){if(node == null)return;System.out.print(node.data+" ");preOrderTraverse(node.leftChild);preOrderTraverse(node.rightChild);}/** * 中序遍历 * @param node */private static void midOrderTraverse(Node node){if(node == null)return;midOrderTraverse(node.leftChild);System.out.print(node.data+" ");midOrderTraverse(node.rightChild);}/** * 后序遍历 * @param node */private static void postOrderTraverse(Node node){if(node == null)return;postOrderTraverse(node.leftChild);postOrderTraverse(node.rightChild);System.out.print(node.data+" ");}}


0 0
原创粉丝点击