这棵树有左孩子,右孩子,然后左孩子还有左孩子,右孩子,等,是一颗二叉树
classs Node
{
Node left(){}; Node right(){}; String nodeName;
}现在有1个方法 void printTree(Node root)
{
//todo //传入是根节点,如何把所有节点的nodename打印出来,谢谢了
}
classs Node
{
Node left(){}; Node right(){}; String nodeName;
}现在有1个方法 void printTree(Node root)
{
//todo //传入是根节点,如何把所有节点的nodename打印出来,谢谢了
}
{
if(root.left()!=null)
printTree(root.left());
if(root.right()!=null)
printTree(root.right());
System.out.printf(root.nodeName)
}
供参考
public void preOrder(BinTreeNode<T>node){
if(node == null){
return;
}
printInfo(node);
if(node.getLeftNode()!=null){
preOrder(node.getLeftNode());
}
if(node.getRightNode()!=null){
preOrder(node.getRightNode());
}
}
public void iteraPreOrder(BinTreeNode<T>node){
Stack<BinTreeNode<T>> stack = new Stack<BinTreeNode<T>>();
if(node != null){
stack.push(node);
while(!stack.empty()){
node = stack.pop();
printInfo(node);
if(node.getLeftNode()!=null){
stack.push(node.getRightNode());
}
if(node.getRightNode()!=null){
stack.push(node.getLeftNode());
}
}
}
}
public void midOrder(BinTreeNode<T>node){
if(node == null){
return;
}
if(node.getLeftNode()!=null){
midOrder(node.getLeftNode());
}
printInfo(node);
if(node.getRightNode()!=null){
midOrder(node.getRightNode());
}
}
public void iteraMidOrder(BinTreeNode<T>p){
Stack<BinTreeNode<T>>stack = new Stack<BinTreeNode<T>>();
BinTreeNode<T> node = p;
while(node != null || stack.size()>0){
while(node != null){
stack.push(node);
node = node.getLeftNode();
}
if(stack.size()>0){
node = stack.pop();
printInfo(node);
node = node.getRightNode();
}
}
}
public void lastOrder(BinTreeNode<T>node){
if(node == null){
return;
}
if(node.getLeftNode()!=null){
lastOrder(node.getLeftNode());
}
if(node.getRightNode()!=null){
lastOrder(node.getRightNode());
}
printInfo(node);
}
public void iteraLastOrder(BinTreeNode<T>p){
BinTreeNode<T> q = p;
Stack<BinTreeNode<T>> stack = new Stack<BinTreeNode<T>>();
while (p != null) {
// 左子树入栈
for (; p.getLeftNode() != null; p = p.getLeftNode())
stack.push(p);
// 当前节点无右子或右子已经输出
while (p != null && (p.getRightNode() == null || p.getRightNode() == q)) {
printInfo(p);
q = p;// 记录上一个已输出节点
if (stack.empty())
return;
p = stack.pop();
}
// 处理右子
stack.push(p);
p = p.getRightNode();
}
}
public void levOrder(BinTreeNode<T>node){
ArrayList<BinTreeNode<T>> tempList = new ArrayList<BinTreeNode<T>>();
tempList.add(node);
while(tempList.size()!=0){
BinTreeNode<T> nodeIndex0 = tempList.get(0);
if(nodeIndex0.getLeftNode()!=null){
tempList.add(nodeIndex0.getLeftNode());
}
if(nodeIndex0.getRightNode()!=null){
tempList.add(nodeIndex0.getRightNode());
}
printInfo(nodeIndex0);
tempList.remove(0);
}
tempList = null;
}
public void printInfo(BinTreeNode<T> node){
System.out.print(node.getValue().toString()+" ");
}