首页 > 解决方案 > 二叉搜索树结果不明确

问题描述

在准备考试时试图了解二叉树,我遇到了这段代码。即使它看起来很有意义,我也无法理解它的目的以及它的实际工作原理,所以有人可以详细说明一下吗?

这是我得到的结果:https ://i.ibb.co/3TTjJBr/kkkkkkkkkkkkj.jpg

space += 5;

print_tree(root->right, space);

printf("\n");
for (int i = 5; i < space; i++) {
    printf(" ");
}

printf("%d\n", root->number);

print_tree(root->left, space);

标签: c

解决方案


你有这个二叉树

            24
          / \
        18 31
       / \ / \
     11 20 29 33
    / \ \
   7 21 55

您需要在左侧打印它,并在右侧“增长”。所以依次遍历树右子树、根、左子树)。

print_tree被递归调用,因此打印的第一个数字是较大的一个 ( 55),其水平位置由调用次数 ( space += 5) 确定。请注意,打印空格的循环从 5 开始,因此根始终在其子树左侧打印 5 个空格。它可以写成

print_tree(root->right, space + 5);

putchar('\n');
for (int i = 0; i < space; i++) {     
    putchar(' ');
}

printf("%d\n", root->number);  

print_tree(root->left, space + 5);

推荐阅读