1. 程式人生 > >JAVA按層級遍歷二叉樹

JAVA按層級遍歷二叉樹

blog otn 二叉 all this java algorithm set com

/**
 * @author cj 2017年7月14日下午1:14:31
 */
package com.yuanye.algorithm;

import java.util.LinkedList;
import java.util.List;

public class BinaryTree {
//    private static List<Node> currentLevelNodes=new ArrayList<>();
//    private static List<Node> nextLevelNodes=new ArrayList<>();
private static List<Node> nodeList=new LinkedList<>(); public static void main(String[] args) { Node rootNode=new Node(); rootNode.setValue(88); generateTree(rootNode,5,0); printTree(rootNode); } public static void generateTree(Node parentNode,int
depth,int currentDepth){ if(currentDepth>depth-1) return; Node leftNode=new Node(); leftNode.setValue(6000+currentDepth); Node rightNode=new Node(); rightNode.setValue(9000+currentDepth); parentNode.setLeftNode(leftNode); parentNode.setRightNode(rightNode); generateTree(leftNode,depth,currentDepth
+1); generateTree(rightNode,depth,currentDepth+1); } public static void printTree(Node rootNode){ System.out.println(rootNode.getValue()); Node leftNode=rootNode.getLeftNode(); Node rightNode=rootNode.getRightNode(); if(leftNode!=null){ nodeList.add(leftNode); } if(rightNode!=null){ nodeList.add(rightNode); } // if(currentLevelNodes.size()==0){ // currentLevelNodes.addAll(nextLevelNodes); // nextLevelNodes.removeAll(nextLevelNodes); // } // if(currentLevelNodes.size()>0){ // Node nextNode=currentLevelNodes.get(0); // currentLevelNodes.remove(0); // printTree(nextNode); // } if(nodeList.size()>0){ Node nextNode=nodeList.get(0); nodeList.remove(0); printTree(nextNode); } } } class Node{ private int value; private Node leftNode; private Node rightNode; public int getValue() { return value; } public void setValue(int value) { this.value = value; } public Node getLeftNode() { return leftNode; } public void setLeftNode(Node leftNode) { this.leftNode = leftNode; } public Node getRightNode() { return rightNode; } public void setRightNode(Node rightNode) { this.rightNode = rightNode; } @Override public String toString() { return "Node [value=" + value + ", leftNode=" + leftNode + ", rightNode=" + rightNode + "]"; } }

JAVA按層級遍歷二叉樹