zoukankan      html  css  js  c++  java
  • convert tree to completed K siblings tree

    就是一棵任意形状的树,给你一个数k,让你把这棵数变成每个节点只有k或者0个孩子的结构,之前某节点孩子不可以变成该节点的祖先,但是可以是兄弟
    由于第一题扣细节逻辑花了40分钟(主要是我一开始没有理解面试官的困惑,然后一步一步的解释来着),第二题就说了个思路(我的想法就是层序遍历然后把对应是一层的节点放到一个list里面,然后再把list变回树,大家有没有更好的思路)

    public void childrenK(TreeNode root, int k) {
            if (root == null) {
                return;
            }
            Queue<TreeNode> q1 = new LinkedList<>();
            q1.add(root);
            ArrayList<TreeNode> list = new ArrayList<>();
            while (!q1.isEmpty()) {
                int size = q1.size();
               
                for (int i = 0; i < size; i++) {
                    TreeNode cur = q1.poll();
              list.add(cur); ArrayList<TreeNode> curChild = cur.children(); if (curChild != null || curChild.size() != 0) q1.addAll(curChild); } } TreeNode root = new TreeNode(list.remove(0)); Queue<TreeNode> q = new LinkedList<>(); q.add(root); while (!q.isEmpty()) { int size = q.size(); for (int i = 0; i < size; i++) { TreeNode cur = q.poll(); for (int j = 0; j < k; j++) { if (list.size() > 0) { TreeNode chil = new TreeNode(list.remove(0); cur.children.add(chil)); q.add(chil); } } }

      

  • 相关阅读:
    Heartbeat
    HA集群基本概念详解
    crmsh语法
    corosync.conf
    安装cloudbase-init和qga批处理
    Oz代码梳理
    [转]LVS安装使用详解
    [转]LVS+Keepalived负载均衡配置
    Django REST framework之序列化组件以及源码分析+全局、局部Hook
    Django REST framework之解析器实例以及源码流程分析
  • 原文地址:https://www.cnblogs.com/apanda009/p/7923867.html
Copyright © 2011-2022 走看看