美文网首页
OC实现二叉树

OC实现二叉树

作者: 高贵冷艳的呵呵呵 | 来源:发表于2017-09-01 15:36 被阅读0次

这两天又翻了下唐巧的博客 碰巧翻到了讲Homebrew的那篇文章,突然想到自己也从来没用oc写过,那么今天正好自己试一试。闲话不说直接就上代码了。

首先是二叉树类

BinaryTreeNode.h

@interface BinaryTreeNode : NSObject
@property (nonatomic, assign) NSInteger value;
///左节点
@property (nonatomic, strong) BinaryTreeNode *leftNode;
///右节点
@property (nonatomic, strong) BinaryTreeNode *rightNode;

+ (instancetype)nodeWithValue:(NSInteger)value;

@end

BinaryTreeNode.m

@implementation BinaryTreeNode
+ (instancetype)nodeWithValue:(NSInteger)value{
    BinaryTreeNode *node = [[super alloc]init];
    node.value = value;
    return  node;
}
@end

创建二叉树的方法

+ (BinaryTreeNode *)createTreeWithValues:(NSArray *)values
{
    BinaryTreeNode *root = nil;
    
    for (NSInteger i=0; i<values.count; i++) {
        NSInteger value = [(NSNumber *)[values objectAtIndex:i]integerValue];
        root = [[self class]addTreeNode:root value:value];
    }
    
    return root;
}
+ (BinaryTreeNode *)addTreeNode:(BinaryTreeNode *)treeNode withvalue:(NSInteger)value
{
    if (!treeNode) { //如果没有根节点,则创建根节点
        treeNode =  [BinaryTreeNode nodeWithValue:value];
    }else if (value <= treeNode.value){
        if (!treeNode.leftNode) {
            //如果左叶子节点没有值则付给左叶子节点
            treeNode.leftNode = [BinaryTreeNode nodeWithValue:value];
        }else
        {
            //如果有值的话那么以左叶子节点为跟节点递归调用
            treeNode.leftNode = [[self class]addTreeNode:treeNode.leftNode value:value];
        }
        
    }else{
        if (!treeNode.rightNode) {
            treeNode.rightNode = [BinaryTreeNode nodeWithValue:value];
        }else
        {
            treeNode.rightNode = [[self class]addTreeNode:treeNode.rightNode value:value];
        }
    }
    return treeNode;
}

根据这些代码生成的应该是二叉排序树 大家可以随便拿一组数试一试 今天先写这些 还会持续更新

相关文章

  • OC实现二叉树

    这两天又翻了下唐巧的博客 碰巧翻到了讲Homebrew的那篇文章,突然想到自己也从来没用oc写过,那么今天正好自己...

  • swift 调用 OC中的block

    OC中声明block; OC中实现block swift中实现

  • python实现二叉树

    递归实现二叉树 堆实现二叉树前序遍历

  • 算法之二叉树

    二叉树之C++实现 创建二叉树 复制二叉树 先序遍历 递归实现 非递归实现 中序遍历 递归实现 非递归实现 后序遍...

  • 算法

    1.交换数值的几种方法 中间变量 加减法 异或 2.oc/c实现常用排序 3. 二叉树 链表 写一个单链表,...

  • 数据结构之树的相关问题

    实验要求 实现二叉树的抽象数据类型 实现二叉树的建立的运算 实现二叉树的遍历运算 实现创建哈夫曼树的算法 实验代码...

  • iOS OC对象总结

    OC的实现 OC的对象、类主要是基于C、C++的结构体来实现的。编写的 OC代码,底层实现其实都是C、C++代码。...

  • OC对象的本质

    一、OC对象的底层实现 OC 中的代码在底层实现,使用的是 C、C++,所以要研究 OC 中的类结构,可以将 OC...

  • 2. 二叉树 BinTree

    二叉树的实现 BinNode : 二叉树结点 二叉树结点结构代码 : 二叉树常用接口实现 将新结点作为左/右孩子插...

  • OC引入Swift,混编

    一、OC中引入Swift 最近在研究swift时候,需要实现OC与Swift混编,因此总结了以下几个步骤实现OC中...

网友评论

      本文标题:OC实现二叉树

      本文链接:https://www.haomeiwen.com/subject/maqkjxtx.html