1. 程式人生 > >二叉樹層次遍歷並列印行號——java

二叉樹層次遍歷並列印行號——java

主要程式碼

public void levelOrderNew(TreeNode root) {
        TreeNode last=root; //當前行最右結點
        TreeNode nlast = null;  //下一行最右結點
        TreeNode temp;
        Queue<TreeNode> queue=new LinkedList<>();
        queue.offer(root);
        while (!queue.isEmpty()) {
            temp=queue
.poll(); System.out.print(temp.getData()+" "); if(temp.getLeftNode()!=null) { queue.offer(temp.getLeftNode()); nlast=temp.getLeftNode(); } if(temp.getRightNode()!=null) { queue.offer(temp.getRightNode()); nlast=
temp.getRightNode(); } if(temp==last) { System.out.println(); last=nlast; } } }

演算法思想:
1.分別標識出所在行的最右結點last,以及下一行的最右結點nlast;
2.nlast一直跟蹤記錄佇列中最新加入的結點,最新加入的結點一定是發現的下一行的最右結點。所以當前行打完時,nlast一定是下一行的最右結點。
2.如果輸出結點是last結點,說明該換行了,last=nlast。