java实现 - 树的层序遍历
生活随笔
收集整理的這篇文章主要介紹了
java实现 - 树的层序遍历
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
樹:
樹實體結構:
@Data public class Tree {//樹的data值private String dataStr;//樹的第一個孩子節點private Tree firstChild;//樹的下一個孩子節點private Tree nextBrother; }代碼實現:
public class TreeTraversal {//隊列,先進先出private static ConcurrentLinkedQueue<Tree> queue = new ConcurrentLinkedQueue<>();//初始化樹結構private static Tree G = new Tree("G", null, null);private static Tree F = new Tree("F", null, G);private static Tree E = new Tree("E", null, null);private static Tree D = new Tree("D", null, null);private static Tree C = new Tree("C", F, D);private static Tree B = new Tree("B", E, C);private static Tree A = new Tree("A", B, null);public static void main(String[] args) {TreeTraversal(A);}//層序遍歷public static void TreeTraversal(Tree root) {Tree pTree;//父節點Tree broTree;//兄弟節點//A 根節點及其兄弟節點放入隊列queue.add(root);while (null != root.getNextBrother()) {queue.add(root.getNextBrother());root = root.getNextBrother();}while (!queue.isEmpty()) {//隊列不為空,取出頭節點 作為父節點pTree = queue.poll();System.out.println(pTree.getDataStr());//如果當前 父節點 有子節點 ,將子節點放入隊列if(null!=pTree.getFirstChild()){queue.add(pTree.getFirstChild());//如果當前父節點 的子節點 有兄弟節點 ,將兄弟節點放入隊列broTree = pTree.getFirstChild().getNextBrother();while (null != broTree) {queue.add(broTree);broTree = broTree.getNextBrother();}}}} }輸出結果:
總結
以上是生活随笔為你收集整理的java实现 - 树的层序遍历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker Redis部署_04
- 下一篇: Docker - 实战TLS加密通讯