数据结构 二叉树

145 阅读1分钟

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