日期:2014-05-20 浏览次数:20692 次
public void preOrder(BNode root){ if(root == null) return; Stack<BNode> stack = new Stack<BNode>(); for(BNode iter=root; !stack.empty() || iter!=null; ){ if(iter == null){ iter=stack.pop(); } iter.visit(); if(iter.getRight() != null){ stack.push(iter.getRight()); } iter=iter.getLeft(); } }
------解决方案--------------------
package org.zwj.tree; /** * 节点类 */ class Node { private int data; private Node leftChild; private Node rightChild; public int getData() { return data; } public void setData(int data) { this.data = data; } public Node getLeftChild() { return leftChild; } public void setLeftChild(Node leftChild) { this.leftChild = leftChild; } public Node getRightChild() { return rightChild; } public void setRightChild(Node rightChild) { this.rightChild = rightChild; } public void addNode(Node node) { if (this.leftChild == null) { this.leftChild = node; } else { if (this.rightChild == null) { if (this.leftChild.getData() < node.getData()) { this.rightChild = node; } } else { this.leftChild.addNode(node); } } } public void printNode() { if (this.leftChild != null) { System.out.print(this.leftChild.getData() + "\t"); if (this.rightChild != null) { System.out.print(this.rightChild.getData() + "\t"); } this.leftChild.printNode(); } } } /** * 一棵树,形状:(节点data<左孩子data<右孩子data) * * @author zKF44321 * */ class Tree { private Node root; public Node getRoot() { return root; } public void setRoot(Node root) { this.root = root; } /** * 添加节点 * * @param data */ public void add(int data) { Node newNode = new Node(); newNode.setData(data); if (this.root == null) { this.root = newNode; } else { if (this.root.getData() < newNode.getData()) { this.root.addNode(newNode); } } } /** * 打印树,从小到大 */ public void print() { if (this.root != null) { System.out.print(this.root.getData() + "\t"); this.root.printNode(); } } } public class TestTree { public static void main(String args[]) { Tree tree = new Tree(); tree.add(1); tree.add(2); tree.add(3); tree.add(4); tree.add(5); tree.add(6); tree.add(7); tree.print(); } }