美文网首页
二叉树粗解

二叉树粗解

作者: 曲终人散Li | 来源:发表于2017-09-11 12:44 被阅读11次

二叉树是一种每个节点最好有左右两个子节点的树结构。概念的东西就不倒腾了。意思意思就好。

算法之中,对于二叉树类的问题 一般使用递归的思想去解它。

二叉排序树/二叉查找树/二叉搜索树 这三者都是一个东西,是一种特殊的二叉树,它满足下面几个条件:
1.若左子树不为空 那么左子树的所有节点都小于根节点
2.若右子树不为空 那么右子树的所有节点都大于根节点
3.左右子树分别又是二叉搜索树
4.整个树结构中 没有键值相等的两个节点

二叉树类的定义(oc 版)
@interface BTNode : NSObject
@Property (nonatomic, assign) NSInteger value; //值
@property (nonatomic, strong) BTNode *left; //左子节点
@property (nonatomic, strong) BTNode *right; //右子节点
@end

二叉树的创建
/**

  • 创建二叉排序树
  • 二叉排序树:左节点值全部小于根节点值,右节点值全部大于根节点值
  • @param values 数组
  • @return 二叉树根节点
    */
  • (BinaryTreeNode *)createTreeWithValues:(NSArray *)values {

    BinaryTreeNode *root = nil;
    for (NSInteger i=0; i<values.count; i++) {
    NSInteger value = [(NSNumber *)[values objectAtIndex:i] integerValue];
    root = [BinaryTree addTreeNode:root value:value];
    }
    return root;
    }

/**

  • 向二叉排序树节点添加一个节点
  • @param treeNode 根节点
  • @param value 值
  • @return 根节点
    */
  • (BinaryTreeNode *)addTreeNode:(BinaryTreeNode *)treeNode value:(NSInteger)value {
    //根节点不存在,创建节点
    if (!treeNode) {
    treeNode = [BinaryTreeNode new];
    treeNode.value = value;
    NSLog(@"node:%@", @(value));
    }
    else if (value <= treeNode.value) {
    NSLog(@"to left");
    //值小于根节点,则插入到左子树
    treeNode.leftNode = [BinaryTree addTreeNode:treeNode.leftNode value:value];
    }
    else {
    NSLog(@"to right");
    //值大于根节点,则插入到右子树
    treeNode.rightNode = [BinaryTree addTreeNode:treeNode.rightNode value:value];
    }

    return treeNode;
    }

相关文章

  • 二叉树粗解

    二叉树是一种每个节点最好有左右两个子节点的树结构。概念的东西就不倒腾了。意思意思就好。 算法之中,对于二叉树类的问...

  • https粗解

    简单地说https=http+(tls)ssl 相比较于http更加安全。Information Security...

  • URL粗解

    一 什么是URL URL, Uniform Resouce Locator , 统一资源定位符。 二 一般结构 ...

  • UITableView粗解

    设置有多少节-->设置每个节有多少cell-->设置每个节的样式节头(节脚)--> 设置数据源(通过循环一个个加载...

  • 粗解缓存

    缓存 一. 概念 1.1 客户端开发者眼中的缓存 1.2 服务器开发者眼中的缓存 二. 特点 2.1 优点 2.2...

  • SDWebImage粗解

    框架GitHub地址SDWebImage 是什么: 一个UIImageView类别添加Web图像和缓存管理Coco...

  • AFNetworking粗解

    框架GitHub地址AFNetworking 构造: NSURLSession AFURLSessionManag...

  • redis 粗解

    Redis基础知识端口:6379默认16个数据库,下标从0开始单线程:redis是单线程+io多路复用而Memch...

  • 递归(粗解)

    递归,要是简单理解它,可以说不难,就是一个递出去,拿回来的过程,拿一个实际生活里面的例子来说: 周末你带着女朋友去...

  • 养生粗解

    今天来说说养生。 养生之道由来已久,古云摄生,善摄生者,无死地也;今称之云:养生,卫生。 善摄生者,其无死地。摄生...

网友评论

      本文标题:二叉树粗解

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