hackerrank : 二叉樹節點交換 Swap Nodes [Algo]

有兩天沒有寫東西了,偷懶把做的題發出來吧。

歡迎拍磚。

查看完整題目點擊這里

Swap Nodes [Algo]

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
        Queue<Node> nodeQueue = new LinkedList<>();
        Node root = new Node(1);
        nodeQueue.add(root);
        while (N-- > 0) {
            Node newNode = new Node(in.nextInt());
            if (newNode.data != -1) {
                nodeQueue.peek().left = newNode;
                nodeQueue.add(newNode);
            }
            newNode = new Node(in.nextInt());
            if (newNode.data != -1) {
                nodeQueue.peek().right = newNode;
                nodeQueue.add(newNode);
            }
            nodeQueue.remove();
        }
        int T = in.nextInt();
        while (T-- > 0) {
            int K = in.nextInt();
            swapNodes(root, 1, K);
            inorder(root);
            System.out.println();
        }
    }

    /*
     * 節點 當前深度 交換基數
     */
    private static void swapNodes(Node root, int i, int k) {
        if (root.left != null)
            swapNodes(root.left, i + 1, k);
        if (root.right != null)
            swapNodes(root.right, i + 1, k);
        if (i % k == 0) {
            Node tmp = root.left;
            root.left = root.right;
            root.right = tmp;
        }

    }

    private static void inorder(Node root) {
        if (root.data == -1) {
            return;
        }
        if (root.left != null)
            inorder(root.left);
        System.out.print(root.data + " ");
        if (root.right != null)
            inorder(root.right);
    }
}

class Node {
    int data;
    Node left;
    Node right;

    Node() {
    }

    Node(int data) {
        this.data = data;
    }
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,814評論 25 708
  • //我所經歷的大數據平臺發展史(三):互聯網時代 ? 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃囈語閱讀 51,285評論 10 200
  • 今天因為開學典禮,第一節語文課時間被推遲了。估計只剩了三十分鐘時間。我該怎么辦呢?重點講些什么呢?正在思考之間,辦...
    平靜75閱讀 424評論 0 3
  • 持續了三天三夜的戰斗終于結束,我軍順利攻占敵方高地,拔掉了這顆深深嵌在我軍腹地的毒牙。我軍陣亡人數45人,三人死...
    江南布衣閱讀 198評論 0 0
  • 我在想,人心,到底會經歷一個怎樣的過程呢? 正是平安之夜,校園里擺滿了蘋果,裝飾極為好看,還有一些社團舉辦的活動,...
    君若阿飄閱讀 297評論 0 0