码迷,mamicode.com
首页 > 其他好文 > 详细

编写最简单的二叉树

时间:2015-10-22 22:35:41      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:

编写最简单的二叉树

技术分享

 

二叉树结构

技术分享

 

源码

-swift-

//
//  Node.swift
//  swift-TreeStructure
//
//  Created by YouXianMing on 15/10/19.
//  Copyright © 2015年 ZiPeiYi. All rights reserved.
//

import UIKit

class Node: NSObject {
    
    /// 节点名字
    var nodeName  : String?
    
    /// 左节点
    var leftNode  : Node?
    
    /// 右节点
    var rightNode : Node?
    
    /**
    便利构造器方法
    
    - parameter nodeWithName: 节点名字
    
    - returns: 节点
    */
    init(withName : String?) {
    
        super.init()
        nodeName = withName
    }
}
//
//  ViewController.swift
//  swift-TreeStructure
//
//  Created by YouXianMing on 15/10/19.
//  Copyright © 2015年 ZiPeiYi. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    let rootNode : Node = Node(withName : "A")
    
    override func viewDidLoad() {
        
        super.viewDidLoad()
        
        // 插入节点
        insertNode(rootNode, node: Node(withName : "B"))
        insertNode(rootNode, node: Node(withName : "C"))
        insertNode(rootNode, node: Node(withName : "D"))
        insertNode(rootNode, node: Node(withName : "E"))
        insertNode(rootNode, node: Node(withName : "F"))
        
        // 便利节点
        treeInfomationWith(rootNode)
    }
    
    /**
    插入节点
    
    - parameter tree: 根节点
    - parameter node: 被插入节点
    */
    func insertNode(tree : Node, node : Node) {
    
        if tree.leftNode == nil {
        
            tree.leftNode = node
            return
        }
        
        if tree.rightNode == nil {
        
            tree.rightNode = node
            return
        }
        
        insertNode(tree.leftNode!, node: node)
    }
    
    /**
    遍历节点
    
    - parameter node: 节点
    */
    func treeInfomationWith(node : Node) {
    
        if node.leftNode != nil {
        
            treeInfomationWith(node.leftNode!)
        }
        
        print(node.nodeName)
        
        if node.rightNode != nil {
        
            treeInfomationWith(node.rightNode!)
        }
    }
}

-objective-c-

//
//  Node.h
//  TreeStructure
//
//  Created by YouXianMing on 15/10/19.
//  Copyright © 2015年 ZiPeiYi. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Node : NSObject

/**
 *  节点名字
 */
@property (nonatomic, strong) NSString *nodeName;

/**
 *  左节点
 */
@property (nonatomic, strong) Node  *leftNode;

/**
 *  右节点
 */
@property (nonatomic, strong) Node  *rightNode;

/**
 *  便利构造器方法
 *
 *  @param nodeName 节点名字
 *
 *  @return 节点
 */
+ (instancetype)nodeWithName:(NSString *)nodeName;

@end
//
//  Node.m
//  TreeStructure
//
//  Created by YouXianMing on 15/10/19.
//  Copyright © 2015年 ZiPeiYi. All rights reserved.
//

#import "Node.h"

@implementation Node

+ (instancetype)nodeWithName:(NSString *)nodeName {

    Node *node     = [[[self class] alloc] init];
    node.nodeName  = nodeName;
    
    return node;
}

@end

 

打印结果

2015-10-19 20:05:24.493 TreeStructure[33002:267671] F

2015-10-19 20:05:24.494 TreeStructure[33002:267671] D

2015-10-19 20:05:24.494 TreeStructure[33002:267671] B

2015-10-19 20:05:24.494 TreeStructure[33002:267671] E

2015-10-19 20:05:24.494 TreeStructure[33002:267671] A

2015-10-19 20:05:24.494 TreeStructure[33002:267671] C

 

编写最简单的二叉树

标签:

原文地址:http://www.cnblogs.com/YouXianMing/p/4892878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!