亲爱的大家: 提前,感谢您的时间。
最近,我决定学习 Objective-C(我是 C-hacker 的老手),在阅读了 Kochan 优美的文字并深入研究 Apple 文档后,我仍然对实现递归类的最佳方法感到困惑(即. 一个类,其中 ivar 具有相同类的类型)。为了具体起见,假设我们希望实现一个二叉树类。首先,我们有一个基本的节点类,我已将其简化为:
@interface MMNode : NSObject {
NSString *label;
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以用两种不同的方式实现我们的树。第一个(也是我认为更明显的方法)是将递归放在类本身中。
@interface MMTree : NSObject {
MMNode *root;
MMTree *leftTree;
MMTree *rightTree;
}
@property (nonatomic, copy) MMNode *root;
@property (nonatomic, retain) MMTree *leftTree;
@property (nonatomic, retain) MMTree *rightTree;
Run Code Online (Sandbox Code Playgroud)
第二种方法,在美妙的CHDataStructures.framework 中使用,实现这个数据结构如下:
typedef struct MMTreeNode {
MMNode *node;
// union {
// struct {
struct MMTreeNode *leftTree;
struct MMTreeNode *rightTree;
// };
// };
} MMTreeNode;
@interface MMTreeStruct : …Run Code Online (Sandbox Code Playgroud)