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

你可能感兴趣的文章
NMAP网络扫描工具的安装与使用
查看>>
NN&DL4.3 Getting your matrix dimensions right
查看>>
NN&DL4.8 What does this have to do with the brain?
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
查看>>
No module named cv2
查看>>
No module named tensorboard.main在安装tensorboardX的时候遇到的问题
查看>>
No qualifying bean of type XXX found for dependency XXX.
查看>>
No resource identifier found for attribute 'srcCompat' in package的解决办法
查看>>
Node.js 文件系统的各种用法和常见场景
查看>>
node.js 配置首页打开页面
查看>>
node.js+react写的一个登录注册 demo测试
查看>>
Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
查看>>
nodejs libararies
查看>>
nodejs-mime类型
查看>>
nodejs中Express 路由统一设置缓存的小技巧
查看>>
Node入门之创建第一个HelloNode
查看>>
NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
查看>>
npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
查看>>
npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
查看>>