c - 从二叉搜索树打印级别和节点
问题描述
我需要对二叉搜索树进行中序遍历,并且需要打印所有节点及其所在的级别,但我想不出一种方法来做到这一点。
例如:
如果我有这个 bst,输出将是:
4 #1
5 #0
9 #1
7 #2
10 #2
18 #3
到目前为止,这是我得到的:
这是我正在使用的结构:
struct tree {
int number;
tree *izq;
tree *der;
};
typedef struct tree *bst;
这是我要实现的功能:
void printTree(bst node) {
if (node==NULL) {
return;
}
else {
if (node->left != NULL) {
printTree(node->left);
}
printf("%d", node->number);
if (node->right !=NULL) {
printTree(node->right);
}
}
}
有没有人有任何想法?谢谢 :)
解决方案
我用 Java 实现了这个,但我认为你可以很容易地将它转换为 C:
private static void printWithLevels(TreeNode node) {
printWithLevels(node, 0);
}
private static void printWithLevels(TreeNode node, int level) {
if (node == null) return;
System.out.println(node.value + "(" + level + ")");
printWithLevels(node.left, level + 1);
printWithLevels(node.right, level + 1);
}
为了使我的解决方案完整,这是我对 TreeNode 的简单/快速实现:
private static class TreeNode {
int value;
TreeNode left;
TreeNode right;
TreeNode(int value, TreeNode left, TreeNode right) {
this.value = value;
this.left = left;
this.right = right;
}
}
推荐阅读
- css - 通过伪元素隐藏 div 内容
- flutter - Flutter-不在具有构建方法的类中时如何获取上下文
- ios - IOS Core Audio - MP3 到 WAV 仅在 1 声道时工作,如何获得立体声?
- jquery - 我可以使用 Jquery 从子局部视图刷新主视图内的父局部视图吗?
- javascript - Firestore 在集合中的集合中查找与 Firestore 中的字段匹配的文档
- python - 无法获取索引基础 URL https://pypi.python.org/simple/ ~ 安装 Python 3 OS X 之后
- angular - 当我重新加载/导航网页时,来自 API 的数据不会刷新
- javascript - 如何根据媒体查询更改 Javascript 变量?
- python - 列表追加在python中跳过一行
- java - Java: InetAddress.getLocalHost(); 抛出 java.net.UnknownHostException