題目描述
????從上到下打印出二叉樹的每個節(jié)點,同一層的節(jié)點按照從左到右的順序打印馍乙。
思路分析
額堵幽,好像沒什么好分析的,這就是一個廣度遍歷瞳腌,借用隊列實現(xiàn)就可以了。
Java代碼實現(xiàn)
import java.util.Queue;
import java.util.concurrent.LinkedBlockingDeque;
/**
* 從上倒下逐層遍歷二叉樹(廣度遍歷)
* @author Administrator
* @version 2018/10/12
*/
public class Exe33_PrintTreeFromTop2Down {
public static void main(String[] args) {
TreeNode node8=new TreeNode(8);
TreeNode node6=new TreeNode(6);
TreeNode node10=new TreeNode(10);
TreeNode node5=new TreeNode(5);
TreeNode node7=new TreeNode(7);
TreeNode node9=new TreeNode(9);
TreeNode node11=new TreeNode(11);
node8.leftTreeNode=node6;node8.rightTreeNode=node10;
node6.leftTreeNode=node5;node6.rightTreeNode=node7;
node10.leftTreeNode=node9;node10.rightTreeNode=node11;
print(node8);
}
//借用隊列結(jié)構(gòu)實現(xiàn)
public static void print(TreeNode root) {
if(root==null) return;
else {
Queue<TreeNode> queue=new LinkedBlockingDeque<TreeNode>();
queue.add(root);
TreeNode tempNode=null;
while(!queue.isEmpty()){
tempNode=queue.poll();
if(tempNode.leftTreeNode!=null)
queue.add(tempNode.leftTreeNode);
if(tempNode.rightTreeNode!=null)
queue.add(tempNode.rightTreeNode);
System.out.print(tempNode.treeVal+" ");
}
}
}
}
class TreeNode{
int treeVal;
TreeNode leftTreeNode;
TreeNode rightTreeNode;
public TreeNode(int value) {
this.treeVal=value;
}
@Override
public String toString() {
return "Node"+treeVal;
}
}