我們使用廣度優先遍歷的辦法,?來?遍歷一棵樹,我們就需要記錄下每一層的節點,從每一層的節點中去獲取下一層節點,所有我們需要有一個記錄每層節點的容器來完成這個工作,簡單點的辦法就是使用隊列,注意隊列數據的順序;
創建樹的方法:
public static TreeNode createTree(){
TreeNode firstLeft=new TreeNode(3);
java將list轉為樹結構、TreeNode firstRighe=new TreeNode(7);
TreeNode root=new TreeNode(5,firstLeft,firstRighe);
TreeNode leftSecondL=new TreeNode(2);
TreeNode rightSecondL=new TreeNode(4);
TreeNode leftSecondR=new TreeNode(6);
java快速遍歷樹形數據、TreeNode rightSecondR=new TreeNode(8);
firstLeft.setLeftNode(leftSecondL);
firstLeft.setRightNode(rightSecondL);
firstRighe.setLeftNode(leftSecondR);
firstRighe.setRightNode(rightSecondR);
java遍歷目錄樹,return root;
}
package com.czy.tree;
import java.util.ArrayList;
import java.util.LinkedList;
java向上遞歸父節點、import java.util.List;
import java.util.Queue;
/*
* 深搜和廣搜
*/
java遞歸樹形結構,public class TreeSerch {
public static List wideSerch(TreeNode root){
Listlist=new ArrayList(); //鏈表用來存數據
Queuequeue=new LinkedList();//隊列
if(root==null){
三個list集合嵌套處理、return list;
}
queue.offer(root);//先把根節點入隊,使隊列不為空,進入循環
while(!queue.isEmpty()){
TreeNode node=queue.poll();
廣度優先遍歷相當于二叉樹的?if(node.getLeftNode()!=null)
queue.offer(node.getLeftNode());
if(node.getRightNode()!=null)
queue.offer(node.getRightNode());
list.add(node.getData());
java的arraylist的sort方法、}
return list;
}
public static void main(String[] args) {
TreeNode root=TestBstTree.createTree();//調用了自己寫的靜態方法創建一棵樹
java菜鳥教程。Listlist=wideSerch(root);
for(Integer one:list){
System.out.println(one);
}
}
java獲取list集合的長度?}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态