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;
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,671评论 25 709
  • //我所经历的大数据平台发展史(三):互联网时代 • 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃呓语阅读 51,584评论 10 200
  • 今天因为开学典礼,第一节语文课时间被推迟了。估计只剩了三十分钟时间。我该怎么办呢?重点讲些什么呢?正在思考之间,办...
    平静75阅读 3,184评论 0 3
  • 持续了三天三夜的战斗终于结束,我军顺利攻占敌方高地,拔掉了这颗深深嵌在我军腹地的毒牙。我军阵亡人数45人,三人死...
    江南布衣阅读 1,531评论 0 0
  • 我在想,人心,到底会经历一个怎样的过程呢? 正是平安之夜,校园里摆满了苹果,装饰极为好看,还有一些社团举办的活动,...
    君若阿飘阅读 2,325评论 0 0

友情链接更多精彩内容