java建立二叉树,递归/非递归先序遍历,递归/非递归中序遍历,层次遍历

来源:互联网 发布:js校验18位身份证号 编辑:程序博客网 时间:2024/06/05 15:11
import java.util.LinkedList;import java.util.Scanner;import java.util.Stack;//structure of binary treeclass BiTree {BiTree lchild;BiTree rchild;String data;}public class BiTreeTest {static Scanner scanner = new Scanner(System.in);// test case: a b c # # d e # g # # f # # #static BiTree createBiTree(BiTree root) {String data = scanner.next();if (data.equals("#")) {return null;} else {root = new BiTree();root.data = data;root.lchild = createBiTree(root.lchild);root.rchild = createBiTree(root.rchild);return root;}}// preOrder recursive traversestatic void preOrderRecur(BiTree root) {if (root != null) {System.out.print(root.data + " ");preOrderRecur(root.lchild);preOrderRecur(root.rchild);}}// inOrder recursive traversestatic void inOrderRecur(BiTree root) {if (root != null) {inOrderRecur(root.lchild);System.out.print(root.data + " ");inOrderRecur(root.rchild);}}// preOrder in non-recursivestatic void preOrder(BiTree root) {Stack<BiTree> stack = new Stack<BiTree>();BiTree cur;stack.push(root);while (!stack.empty()) {while ((cur = stack.peek()) != null) {System.out.print(cur.data + " ");stack.push(cur.lchild);}cur = stack.pop();if (!stack.empty() && (cur = stack.pop()) != null) {stack.push(cur.rchild);}}}// inOrder in non-recursivestatic void inOrder(BiTree root) {Stack<BiTree> stack = new Stack<BiTree>();BiTree cur;stack.push(root);while (!stack.empty()) {while ((cur = stack.peek()) != null) {stack.push(cur.lchild);}stack.pop();if (!stack.empty() && (cur = stack.pop()) != null) {System.out.print(cur.data + " ");stack.push(cur.rchild);}}}// level traverse,use LinkedList instead of queue data structurestatic void levelTraverse(BiTree root) {LinkedList<BiTree> list = new LinkedList<BiTree>();BiTree cur;list.add(root);while (list.size() != 0) {cur = list.removeFirst();if (cur != null) {System.out.print(cur.data + " ");}if (cur.lchild != null) {list.add(cur.lchild);}if (cur.rchild != null) {list.add(cur.rchild);}}}public static void main(String[] args) {BiTree root = null;root = createBiTree(root);// preOrderRecur(root);// inOrderRecur(root);// inOrder(root);levelTraverse(root);}}

原创粉丝点击