博客
关于我
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/

你可能感兴趣的文章
numpy数组索引-ChatGPT4o作答
查看>>
NUMPY矢量化np.prod不能构造具有超过32个操作数的ufunc
查看>>
Numpy矩阵与通用函数
查看>>
numpy绘制热力图
查看>>
numpy转PIL 报错TypeError: Cannot handle this data type
查看>>
Nutch + solr 这个配合不错哦
查看>>
NutzCodeInsight 2.0.7 发布,为 nutz-sqltpl 提供友好的 ide 支持
查看>>
NutzWk 5.1.5 发布,Java 微服务分布式开发框架
查看>>
NUUO网络视频录像机 css_parser.php 任意文件读取漏洞复现
查看>>
NuxtJS 接口转发详解:Nitro 的用法与注意事项
查看>>
NVelocity标签使用详解
查看>>
Nvidia Cudatoolkit 与 Conda Cudatoolkit
查看>>
NVIDIA GPU 的状态信息输出,由 `nvidia-smi` 命令生成
查看>>
NVIDIA-cuda-cudnn下载地址
查看>>
nvidia-htop 使用教程
查看>>
nvidia-smi 参数详解
查看>>
nvm安装以后,node -v npm 等命令提示不是内部或外部命令 node多版本控制管理 node多版本随意切换
查看>>
NYOJ 1066 CO-PRIME(数论)
查看>>
nyoj------203三国志
查看>>
nyoj58 最少步数
查看>>