博客
关于我
Objective-C实现BinarySearchTreeNode树算法(附完整源码)
阅读量:794 次
发布时间:2023-02-17

本文共 3407 字,大约阅读时间需要 11 分钟。

Objective-C??BinarySearchTreeNode???

??????????????Binary Search Tree?BST?????????Objective-C?????????????????????

???

?????????BinarySearchTreeNode????????????????????????

@interface BinarySearchTreeNode : NSObject@property (nonatomic, assign) NSInteger value;@end

????

????????????????????????????????????????????????????????????

- (BinarySearchTreeNode *)insert:(NSInteger)newValue afterNode:(BinarySearchTreeNode *)node {    // ?????    BinarySearchTreeNode *newNode = [[BinarySearchTreeNode alloc] init];    newNode.value = newValue;        // ??????    if (node.value < newValue) {        // ?????        if (node.right == nil) {            node.right = newNode;        } else {            // ???????????            BinarySearchTreeNode *rightNode = node.right;            if (rightNode.value < newValue) {                rightNode.right = newNode;            } else {                rightNode.left = newNode;            }        }    } else {        // ?????        if (node.left == nil) {            node.left = newNode;        } else {            // ???????????????            BinarySearchTreeNode *leftNode = node.left;            if (leftNode.value > newValue) {                leftNode.right = newNode;            } else {                leftNode.left = newNode;            }        }    }        return newNode;}

????

??????????????????????????????????????

- (BinarySearchTreeNode *)search:(NSInteger)searchValue {    // ????????    BinarySearchTreeNode *node = [self.root left];        // ????????????    if (node.value == searchValue) {        return node;    }        // ?????????????????????    if (node.value > searchValue) {        if (node.left) {            return [self search:searchValue fromNode:node.left];        } else {            return nil;        }    }        // ?????????????????????    if (node.right) {        return [self search:searchValue fromNode:node.right];    } else {        return nil;    }}- (BinarySearchTreeNode *search:(NSInteger)searchValue fromNode:(BinarySearchTreeNode *)node {    // ????????????    if (node.value == searchValue) {        return node;    }        // ?????????????????????    if (node.value > searchValue) {        if (node.left) {            return [self search:searchValue fromNode:node.left];        } else {            return nil;        }    }        // ?????????????????????    if (node.right) {        return [self search:searchValue fromNode:node.right];    } else {        return nil;    }})

????

???????????????????????????????????????

- (void)traverse:(BinarySearchTreeNode *)node {    // ??????    [self visit:node];        // ??????????    if (node.left) {        [self traverse:node.left];    }        // ??????????    if (node.right) {        [self traverse:node.right];    }})

????

?????????????????????

// ?????BinarySearchTreeNode *root = [[BinarySearchTreeNode alloc] init];root.value = 5;// ????[root insert:3 afterNode:root];    // ?????3[root insert:8 afterNode:root];    // ?????8[root insert:10 afterNode:root.right]; // ?8?????10[root insert:2 afterNode:root.left];   // ?3?????2// ????NSLog(@"??3?");BinarySearchTreeNode *node3 = [root search:3];NSLog(@"??8?");BinarySearchTreeNode *node8 = [root search:8];NSLog(@"??10?");BinarySearchTreeNode *node10 = [root search:10];NSLog(@"??1?");BinarySearchTreeNode *node1 = [root search:1];

??

????????????????????????????????????????????????????????????????????????????

转载地址:http://qdnfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现 jugglerSequence杂耍者序列算法 (附完整源码)
查看>>
Objective-C实现 lattice path格子路径算法(附完整源码)
查看>>
Objective-C实现1000 位斐波那契数算法(附完整源码)
查看>>
Objective-C实现2 个数字之间的算术几何平均值算法(附完整源码)
查看>>
Objective-C实现2d 表面渲染 3d 点算法(附完整源码)
查看>>
Objective-C实现2D变换算法(附完整源码)
查看>>
Objective-C实现3n+1猜想(附完整源码)
查看>>
Objective-C实现3n+1猜想(附完整源码)
查看>>
Objective-C实现9x9乘法表算法(附完整源码)
查看>>
Objective-C实现9×9二维数组数独算法(附完整源码)
查看>>
Objective-C实现A*(A-Star)算法(附完整源码)
查看>>
Objective-C实现A-Star算法(附完整源码)
查看>>
Objective-C实现abbreviation缩写算法(附完整源码)
查看>>
Objective-C实现ABC人工蜂群算法(附完整源码)
查看>>
Objective-C实现activity selection活动选择问题算法(附完整源码)
查看>>
Objective-C实现AC算法(Aho-Corasick) 算法(附完整源码)
查看>>
Objective-C实现adaboost算法(附完整源码)
查看>>
Objective-C实现Adler32算法(附完整源码)
查看>>
Objective-C实现AES算法(附完整源码)
查看>>
Objective-C实现AffineCipher仿射密码算法(附完整源码)
查看>>