博客
关于我
Objective-C实现BinarySearchTreeNode树算法(附完整源码)
阅读量:795 次
发布时间: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实现DoublyLinkedList双链表算法(附完整源码)
查看>>
Objective-C实现DPLL(davisb putnamb logemannb loveland)算法(附完整源码)
查看>>
Objective-C实现DWT离散小波变换(附完整源码)
查看>>
Objective-C实现Edmonds-Karp算法(附完整源码)
查看>>
Objective-C实现EEMD算法(附完整源码)
查看>>
Objective-C实现elgamal 密钥生成器算法(附完整源码)
查看>>
Objective-C实现EM算法(附完整源码)
查看>>
Objective-C实现EM算法(附完整源码)
查看>>
Objective-C实现entropy熵算法(附完整源码)
查看>>
Objective-C实现euclidean distance欧式距离算法(附完整源码)
查看>>
Objective-C实现Euclidean GCD欧几里得最大公约数算法(附完整源码)
查看>>
Objective-C实现euclideanDistance欧氏距离算法(附完整源码)
查看>>
Objective-C实现euler method欧拉法算法(附完整源码)
查看>>
Objective-C实现euler modified变形欧拉法算法(附完整源码)
查看>>
Objective-C实现eulerianPath欧拉路径算法(附完整源码)
查看>>
Objective-C实现Eulers TotientFunction欧拉函数算法(附完整源码)
查看>>
Objective-C实现eulers totient欧拉方程算法(附完整源码)
查看>>
Objective-C实现EulersTotient欧拉方程算法(附完整源码)
查看>>
Objective-C实现eval函数功能(附完整源码)
查看>>
Objective-C实现even_tree偶数树算法(附完整源码)
查看>>