1 创建二叉树
@interface BinaryTreeNode : NSObject {
id data;
BinaryTreeNode *left;
BinaryTreeNode *right;
}
+ (BinaryTreeNode*)addTree:(BinaryTreeNode *)p andValue:(id)value
{
if (nil == p) {
p = [[BinaryTreeNode alloc] init];
p -> data = value;
p -> left = p -> right = nil;
} else if (![value intValue] < [p ->data intValue]) {
p -> left = [BinaryTreeNode addTree:p -> left andValue:value];
} else {
p -> right = [BinaryTreeNode addTree:p -> right andValue:value];
}
return p;
}
2 遍历查询二叉树 中序 递归
- (void)inOrderBinaryTree:(BinaryTreeNode *)p {
if (p != nil) {
[self inOrderBinaryTree:p -> left];
printf("%d/n", [p -> data intValue]);
[self inOrderBinaryTree:p -> right];
}
}
测试输出
BinaryTreeNode *root = nil;
for (id value in @[@(2), @(5), @(6), @(8), @(9)]) {
root = [BinaryTreeNode addTree:root andValue:value];
}
[root inOrderBinaryTree:root];
结果:9/n8/n6/n5/n2/n