二叉树粗解

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

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

二叉排序树/二叉查找树/二叉搜索树 这三者都是一个东西,是一种特殊的二叉树,它满足下面几个条件:
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;
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是二叉树? 在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”,左子...
    小猫仔阅读 3,652评论 0 0
  • 参考两篇其他bolg总结的二叉树:https://github.com/xy7313/lintcode/blob/...
    暗黑破坏球嘿哈阅读 7,096评论 0 1
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 9,965评论 1 31
  • 一. 二叉树的定义 二叉树(Binary Tree)是 n ( n >= 0) 个节点的有限集,这个集合可以为空,...
    NahuelK阅读 6,172评论 0 1
  • 姓名: 李小娜 [嵌牛导读] :这篇文章主要介绍了Java二叉排序树,包括二叉排序树的定义、二叉排序树的性质、二叉...
    n184阅读 3,880评论 0 0

友情链接更多精彩内容