博客
关于我
Objective-C实现BinarySearchTreeNode树算法(附完整源码)
阅读量:798 次
发布时间: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/

你可能感兴趣的文章
NFS网络文件系统
查看>>
ng 指令的自定义、使用
查看>>
nginx + etcd 动态负载均衡实践(二)—— 组件安装
查看>>
nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
查看>>
Nginx + uWSGI + Flask + Vhost
查看>>
Nginx - Header详解
查看>>
Nginx Location配置总结
查看>>
Nginx upstream性能优化
查看>>
Nginx 中解决跨域问题
查看>>
Nginx 动静分离与负载均衡的实现
查看>>
Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
查看>>
Nginx 反向代理解决跨域问题
查看>>
Nginx 反向代理配置去除前缀
查看>>
nginx 后端获取真实ip
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
nginx 常用配置记录
查看>>
Nginx 我们必须知道的那些事
查看>>
Nginx 的 proxy_pass 使用简介
查看>>
Nginx 的配置文件中的 keepalive 介绍
查看>>
nginx 配置 单页面应用的解决方案
查看>>