1. 对指针进行取值之前,一定要保证指针不为空
空指针不可取其值或者继续访问
#define BinNodePosi(T) BinNode<T>*
template <typename T>
struct BinNode{
T data;
BinNodePosi(T) lChild;
BinNodePosi(T) rChild;
};
#define IsLChild(x) (x).parent->lChild == x
// (x).parent->lChild ⇒ 处理是有危险的
// 要首先保证 x.parent 不为空,
#define IsLChild(x) (!IsRoot(x) && (x).parent->lChild == x)
- 对任何二叉树结点而言,都会存在:数据域、左指针域以及右指针域(这是结点结构体的三大必要构成),
(为不为 NULL,就不一定了)
只不过再进行取值(*p
)或者访问(.
或者->
)操作时,需要首先判断是否为空;
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步