首页 / 算法 / 二叉树的创建、遍历、翻转
二叉树的创建、遍历、翻转
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了二叉树的创建、遍历、翻转,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2359字,纯文字阅读大概需要4分钟。
内容图文
BinaryTreeNode.h
// // BinaryTreeNode.h // BinaryTree // // Created by KeSen on 15/9/7. // Copyright (c) 2015年 KeSen. All rights reserved. // #import <Foundation/Foundation.h> @class BinaryTreeNode; @interface BinaryTreeNode : NSObject // 添加节点 + (BinaryTreeNode *)addTree:(BinaryTreeNode *)p addValue:(id)value; // 中序遍历 - (void)inOrderBinaryTree:(BinaryTreeNode *)p; // 翻转 - (BinaryTreeNode *)invertTree:(BinaryTreeNode *)p; @end
BinaryTreeNode.m
// // BinaryTreeNode.m // BinaryTree // // Created by KeSen on 15/9/7. // Copyright (c) 2015年 KeSen. All rights reserved. // #import " BinaryTreeNode.h " @implementation BinaryTreeNode { id val; BinaryTreeNode *left; BinaryTreeNode *right; } // 添加节点 + (BinaryTreeNode *)addTree:(BinaryTreeNode *)p addValue:(id)value { if (p == nil) { p = [[BinaryTreeNode alloc] init]; p->val = value; p->left = nil; p->right = nil; } elseif ([value integerValue] < [p->val integerValue]) { p->left = [BinaryTreeNode addTree:p->left addValue:value]; } else { p->right = [BinaryTreeNode addTree:p->right addValue:value]; } return p; } // 中序遍历二叉树 - (void)inOrderBinaryTree:(BinaryTreeNode *)p { if (p != nil) { [self inOrderBinaryTree:p->left]; printf("%ld\n", (long)[p->val integerValue]); [self inOrderBinaryTree:p->right]; } } - (BinaryTreeNode *)invertTree:(BinaryTreeNode *)p { if (p == nil) { return nil; } p->left = [p invertTree:p->left]; p->right = [p invertTree:p->right]; BinaryTreeNode *temp = p->left; p->left = p->right; p->right = temp; return p; } @end
main.m
// // main.m // BinaryTree // // Created by KeSen on 15/9/7. // Copyright (c) 2015年 KeSen. All rights reserved. // #import <Foundation/Foundation.h> #import"BinaryTreeNode.h"int main(int argc, constchar * argv[]) { @autoreleasepool { BinaryTreeNode *root = nil; for (id value in @[@(2), @(5), @(6), @(8), @(9)]) { root = [BinaryTreeNode addTree:root addValue:value]; } [root inOrderBinaryTree:root]; printf("\n"); BinaryTreeNode *invertTree = [root invertTree:root]; [invertTree inOrderBinaryTree:invertTree]; } return0; }
输出结果为:
2
5
6
8
9
9
8
6
5
2
github:https://github.com/action456789/BinaryTree
参考:http://blog.devtang.com/blog/2015/06/16/talk-about-tech-interview/
http://www.cocoachina.com/bbs/read.php?tid=177907
原文:http://www.cnblogs.com/actionke/p/4788406.html
内容总结
以上是互联网集市为您收集整理的二叉树的创建、遍历、翻转全部内容,希望文章能够帮你解决二叉树的创建、遍历、翻转所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。