小编ILo*_*oon的帖子

打印级别订单二进制搜索树格式

我已实现以下代码以按级别顺序打印二叉搜索树.

public void printLevelOrder(int depth) {
    for (int i = 1; i <= depth; i++) {
        printLevel(root, i);
    }
}

public void printLevel(BinaryNode<AnyType> t, int level) {
    if (t == null) {
        return;
    }
    if (level == 1) {
        System.out.print(t.element);
    } else if (level > 1) {
        printLevel(t.left, level - 1);
        printLevel(t.right, level - 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何改进我的代码,让它以某种格式打印出来.

举个例子,给一棵树

    1 
   / \
  2   3
 /   / \
4   5   6
Run Code Online (Sandbox Code Playgroud)

目前它打印如下:

123456
Run Code Online (Sandbox Code Playgroud)

我正在寻找它打印如下:

Level 0: 1
Level 1: 2 3 …
Run Code Online (Sandbox Code Playgroud)

java binary-search-tree

7
推荐指数
1
解决办法
1万
查看次数

随机数范围,不包括0

我有以下函数生成-10到2之间的随机数:

#include <stdlib.h>
#include <time.h>

static int
getRandomReturnCode(void)
{
    int N = 2,
        M = -10;

    srand(time(NULL));

    r = M + rand() / (RAND_MAX / (N - M + 1) + 1);

    if (r == 0){
        getRandomReturnCode();
    }

    return r;
}
Run Code Online (Sandbox Code Playgroud)

目前,如果返回0(成功)的返回代码,它将递归调用该函数,直到满足并返回非零返回代码.我可以做些什么来改进我的代码,使得0被排除在随机选择的数字范围之外?

c

4
推荐指数
1
解决办法
981
查看次数

从list元素中获取值的最简洁方法

我有一个解析日志中的行列表,如下所示:

parsedLog = ['20151005 09:11:14 LOG_ID 00000000', '20151005 09:11:14 LOG_ADDR 0173acc4\n    Address of log', '20151005 09:11:14 READ_CONFIG 00000105',
Run Code Online (Sandbox Code Playgroud)

我正在寻找最简洁的方法0173acc4从字符串中的第二个元素中提取值LOG_ADDR(即键)(原因是日志不会始终保持一致).

我目前正在使用以下一个班轮:

filter(lambda line: 'LOG_ADDR' in line, parsedLog)[0].split('\n')[-8:]
Run Code Online (Sandbox Code Playgroud)

python list

4
推荐指数
1
解决办法
79
查看次数

使用bash脚本设置PYTHONPATH并运行nosetests

我有以下脚本设置干净PYTHONPATH:

#!/bin/bash

# Get the directory the script is in
DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)

$ Walk up to root of branch dir
DIR=$DIR/../../..

PYTHONPATH=$DIR/module1
PYTHONPATH=$PYTHONPATH:$DIR/module2
PYTHONPATH=$PYTHONPATH:$DIR/module3
PYTHONPATH=$PYTHONPATH:$DIR/module4
export PYTHONPATH
Run Code Online (Sandbox Code Playgroud)

该脚本应该与nosetest命令一起运行,以允许测试在需要时导入所有必需的模块而不会出现任何问题:

./path/to/script/PythonPath.sh && nosetests <tons of other arguments>

但是,当我运行上面的命令时,我得到一个ImportError模块,声明它不存在.我echo在脚本的末尾添加了一个语句来帮助调试,PYTHONPATH它完全是应该的.我也试过PYTHONPATH手动设置,似乎无法重现同样的问题.

python bash nose

2
推荐指数
1
解决办法
913
查看次数

将char数组传递给函数并将内容复制到另一个char数组

我有一个char数组,其中来自命令行的用户输入被放入.我想将该数组传递给函数foo并将其内容复制到原始数组中包含的内容大小的类似char数组.但是我收到了这个警告.我哪里错了?

char inputBuffer[500];

void foo(char *inputBuffer)
{
    char readBuffer[sizeof(inputBuffer)];
    strncpy(readBuffer, inputBuffer, sizeof(inputBuffer));
}
Run Code Online (Sandbox Code Playgroud)

警告:"__builtin_strncpy"调用中'sizeof'的参数与源表达式相同,是否意味着提供显式长度

c char

2
推荐指数
1
解决办法
181
查看次数

在C中声明后初始化数组

我试图执行以下操作但收到以下错误:

"错误:{令牌之前的预期表达

Test_Stubs.h

#define SIGNATURE 0x78,0x9c
Run Code Online (Sandbox Code Playgroud)

TEST.C

#include "Test_Stubs.h"

static unsigned myArray[100];

static void
setup(void)
{
    myArray = {SIGNATURE};
}
Run Code Online (Sandbox Code Playgroud)

编辑

关注问题:

有没有办法在#definemyArray的特定索引中分配单个值?例如...

#include "Test_Stubs.h"

static unsigned myArray[100];

static void
setup(void)
{
    myArray[0] = SIGNATURE[0]; //0x78
    myArray[1] = SIGNATURE[1]; //0x9c
}
Run Code Online (Sandbox Code Playgroud)

显然,上面的代码不会编码,因为SIGNATURE既不是数组也不是指针.

c macros

1
推荐指数
1
解决办法
96
查看次数

标签 统计

c ×3

python ×2

bash ×1

binary-search-tree ×1

char ×1

java ×1

list ×1

macros ×1

nose ×1