二叉树遍历(递归)

TestBinaryTree { main(String[] args) {Node<String> g = new Node<String>(”G”, null, null);Node<String> e = new Node<String>(”E”, null, null);Node<String> f = new Node<String>(”F”, null, null);Node<String> d = new Node<String>(”D”, null, g);Node<String> b = new Node<String>(”B”, d, e);Node<String> c = new Node<String>(”C”, null, f);Node<String> a = new Node<String>(”A”, b, c);System.out.println(”生成的二叉树:”);System.out.println(”A”);System.out.println(”|”);System.out.println(”|———|”);System.out.println(”BC”);System.out.println(”||”);System.out.println(” |———|—–|”);System.out.println(” DEF”);System.out.println(” |”);System.out.println(” —-|”);System.out.println(”G”);System.out.println(”二叉树深度:” + BinaryTree.getDepth(a));System.out.print(”前序遍历:”);BinaryTree.priorderTraversal(a);System.out.println();System.out.print(”中序遍历:”);BinaryTree.inorderTraversal(a);System.out.println();System.out.print(”后序遍历:”);BinaryTree.postorderTraversal(a);System.out.println();}} BinaryTree {<T> void priorderTraversal(Node<T> node) {if (node != null) {visitNode(node);priorderTraversal(node.getLeftChild());priorderTraversal(node.getRightChild());}}<T> void inorderTraversal(Node<T> node) {if (node != null) {inorderTraversal(node.getLeftChild());visitNode(node);inorderTraversal(node.getRightChild());}}<T> void postorderTraversal(Node<T> node) {if (node != null) {postorderTraversal(node.getLeftChild());postorderTraversal(node.getRightChild());visitNode(node);}}<T> int getDepth(Node<T> node) {if (node == null) {return 0;}int leftDepth = 0;int rightDepth = 0;leftDepth = getDepth(node.getLeftChild());rightDepth = getDepth(node.getRightChild());return (leftDepth > rightDepth ? leftDepth : rightDepth) + 1;}<T> void visitNode(Node<T> node) {System.out.print(node.getKey() + ” “);}}Node<T> {private T key;private Node<T> leftChild;private Node<T> rightChild;public Node() {}public Node(T key, Node<T> leftChild, Node<T> rightChild) {super(); this.key = key;this.leftChild = leftChild;this.rightChild = rightChild;}public T getKey() {return key;}public void setKey(T key) {this.key = key;}public Node<T> getLeftChild() {return leftChild;}public void setLeftChild(Node<T> leftChild) {this.leftChild = leftChild;}public Node<T> getRightChild() {return rightChild;}public void setRightChild(Node<T> rightChild) {this.rightChild = rightChild;}},香港空间,美国空间,香港空间生命有限,努力无限

二叉树遍历(递归)

相关文章:

你感兴趣的文章:

标签云: