erlang的非平衡的二叉树的操作
-module(tree1). -export([test1/0]). lookup(Key,nil) ->
not_found;
lookup(Key,{Key,Value,_,_}) ->
{found,Value};
lookup(Key,{Key1,_,Smaller,_}) when Key < Key1 ->
lookup(Key,Smaller);
lookup(Key,{Key1,_,_,Bigger}) when Key > Key1 ->
lookup(Key,Bigger). insert(Key,Value ,nil) ->
{Key,Value,nil,nil};
insert(Key,Value,{Key,_,Smaller,Bigger}) ->
{Key,Value,Smaller,Bigger};
insert(Key,Value,{Key1,V,Smaller,Bigger}) when Key < Key1 ->
{Key1,V,insert(Key,Value,Smaller),Bigger};
insert(Key,Value,{Key1,V,Smaller,Bigger}) when Key > Key1 ->
{Key1,V,Smaller,insert(Key,Value,Bigger)}.
write_tree(T) ->
write_tree(0,T).
write_tree(D,nil) ->
% io:tab(D),
io:format('nil',[]);
write_tree(D,{Key,Value,Smaller,Bigger}) ->
D1 = D +4 ,
write_tree(D1,Bigger),
io:format('~n',[]),
%io:tab(D),
io:format('~w ==> ~w~n',[Key,Value]),
write_tree(D1,Smaller).
test1() ->
S1=nil,
S2=insert(4,joe,S1),
S3=insert(10,fred,S2),
S4=insert(3,jane,S3),
S5=insert(7,kalle,S4),
S6=insert(6,thomes,S5),
S7=insert(5,rickard,S6),
S8=insert(9,susan,S7),
S9=insert(2,tobbe,S8),
S10=insert(8,dan,S9),
write_tree(S10).
erlang的非平衡的二叉树的操作的更多相关文章
- 数据结构与算法系列研究五——树、二叉树、三叉树、平衡排序二叉树AVL
树.二叉树.三叉树.平衡排序二叉树AVL 一.树的定义 树是计算机算法最重要的非线性结构.树中每个数据元素至多有一个直接前驱,但可以有多个直接后继.树是一种以分支关系定义的层次结构. a.树是n ...
- 非递归遍历二叉树Java实现
2018-10-03 20:16:53 非递归遍历二叉树是使用堆栈来进行保存,个人推荐使用双while结构,完全按照遍历顺序来进行堆栈的操作,当然在前序和后序的遍历过程中还有其他的压栈流程. 一.Bi ...
- JAVA递归、非递归遍历二叉树(转)
原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { priva ...
- ARM 非对齐的数据访问操作
I’m confused about unaligned memory accesses on ARM. My understanding was that they’re not allowed — ...
- 算法:非平衡二叉搜索树(UnBalanced Binary Search Tree)
背景 很多场景下都需要将元素存储到已排序的集合中.用数组来存储,搜索效率非常高: O(log n),但是插入效率比较低:O(n).用链表来存储,插入效率和搜索效率都比较低:O(n).如何能提供插入和搜 ...
- 非递归遍历二叉树Java版的实现代码(没写层次遍历)
直接上代码呵呵,里面有注解 package www.com.leetcode.specificProblem; import java.util.ArrayList; import java.util ...
- 二叉树的操作--C语言实现
树是一种比较复杂的数据结构,它的操作也比较多.常用的有二叉树的创建,遍历,线索化,线索化二叉树的遍历,这些操作又可以分为前序,中序和后序.其中,二叉树的操作有递归与迭代两种方式,鉴于我个人的习惯,在这 ...
- C中二叉排序树的非递归和递归插入操作以及中序遍历代码实现【可运行】
C中二叉排序树的非递归和递归插入操作以及中序遍历代码实现[可运行] #include <stdio.h> #include <stdlib.h> typedef int Key ...
- 非递归实现二叉树的三种遍历操作,C++描述
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
随机推荐
- highcharts 图例详解
highcharts 图例 tooltip: { }, legend: { ...
- [JSOI2017]原力
题目大意: 一个$n(n\le5\times10^4)$个点,$m(m\le10^5)$条边的无向图.每条边有一个边权$w_i(w_i\le10^6)$和一个附加属性$t_i(t_i\in\{R,G, ...
- php升级版本
Centos下Yum安装PHP5.5,5.6,7.0 默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | ...
- CSS浮动设置与清除
float:设置浮动 浮动会使元素脱离普通文档流,使元素向左或向右移动,其周围的元素也会重新排布,在布局中非常有用. html: <p>以下是图片的浮动设置:</p> < ...
- UBIFS分区制作及UBIFS烧写和启动
参考 http://blog.csdn.net/chongzi865458/article/details/6799258 ubiattach version 1.0 - a tool to atta ...
- springMVC初探视图解析器——ResourceBundleViewResolver
视图解析器ResourceBundleViewResolver是根据proterties文件来找对应的视图来解析”逻辑视图“的, 该properties文件默认是放在classpath路径下的view ...
- CSS从大图片上截取小图标
一张图片,用CSS分割成多个小图标. css样式: .icon{ background:url(../images/tabicons.png) no-repeat;width:18px; line-h ...
- jar文件的Eclipse插件安装
以[zigen.plugin.db_1.2.2.v20101009.jar]为例. (1)在[\eclipse\dropins]目录下新建一个目录,例如[myplugin] (2)上面新建的n目录下建 ...
- javascript event loop
原文: https://blog.csdn.net/sjn0503/article/details/76087631 简单来讲,整体的js代码这个macrotask先执行,同步代码执行完后有micro ...
- 5.全局异常捕捉【从零开始学Spring Boot】
在一个项目中的异常我们我们都会统一进行处理的,那么如何进行统一进行处理呢? 新建一个类GlobalDefaultExceptionHandler, 在class注解上@ControllerAdvice ...