我有以下结构:
<%@ page contentType="text/xml" %>
<%@page pageEncoding="UTF-8"%>
<%@ page trimDirectiveWhitespaces="true"%>
用这棵树:
问题: mytree-&gt; left-&gt; left-&gt; left为NOT NULL。但为什么?!如何检查我是否到达分支的末尾?
typedef struct treeNode *tree;
typedef struct treeNode {
int key;
tree left, right;
} treeNode;
答案 0 :(得分:5)
分配treeNode时,是否将指针初始化为NULL? C不会神奇地初始化动态分配的内存。
您添加了初始化代码。 malloc()
不会将内存的内容初始化为零。您的代码中没有任何内容可以将left
和right
指针设置为NULL
。这就是为什么他们不是NULL
的原因。您可以手动初始化它们(最适合您),也可以使用calloc()
代替malloc()
。 calloc()
将分配的内存初始化为零。