编写最简单的二叉树
二叉树结构
源码
-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