手机浏览器扫描二维码访问
如果一颗有根树每个节点的子树最多有n个,同时每个节点在其父节点中都有固定的可能可以留空的位置,这棵树叫做n叉树。
其中每个节点都可以有两个固定位置的子树的有根树叫做二叉树,二叉树中每个节点的两个子树分别叫做左子树和右子树,由于位置固定,没有左子树的时候也是可以有右子树的。
而“多叉树”
通常并不指n为任意值的n叉树,只是在和n叉树作比较的时候表示普通的有根树。
对于随机的树,高度的平均复杂度是O(logn),但是没有限制而且不随机的树高度也可以达到O(n),也就是除了叶节点都只有一个子树,或者常数个分支的情况。
所以树作为数据结构时通常需要另外进行平衡。
存储
对于普通的树,可以像图一样为每一个点存储一个边表(通常按顺序存和每一个点的关系的叫做邻接矩阵,存具体的边的叫做邻接表),或者直接存储所有边的边表等。
由于树是稀疏图,所以一般不用邻接矩阵存储。
对于有根树,如果用为每一个点储存一个边表的方法,由于每一棵树都只有一个父节点,所以通常指向父节点的边不存在这个表中。
同时如果子节点是没有顺序的,也是因为一个节点的子节点不会同时是其他节点的子节点,也可以把子节点直接当成存边的链表的节点,这时候每个节点只需要储存两个指针,所以这种存储方法有时候也会被叫做多叉树转二叉树。
对于子节点是有顺序的有根树,每条边都可以以固定的位置分别储存。
对于完全二叉树甚至能直接用一个数组访问所有节点,不另外储存边的信息。
有的树可以被设计成固定的从根节点开始访问,这时候可以不储存父节点。
同样的,有的树也可以省略子节点,例如并查集。
树的遍历
对于一般的树,可以用和普通的图一样的方法遍历,比如深度优先搜索和宽度优先搜索。
如果和树的每个节点相邻的点有固定的顺序,深度优先搜索可以不储存当前点以外的任何信息,而且不用判重。
而在有根树中更方便,所以有根树中很少使用宽度优先搜索。
对于有根树的从根开始的深度优先搜索遍历,有三种特定的顺序:
前序遍历
先访问根节点,然后再访问所有的子树;
后序遍历
先访问子树,然后再访问根节点;
中序遍历
二叉树专用,先访问左子树,然后是根节点,最后是右子树。
注意对于每一种遍历,事实上都得先访问根节点,这里的遍历顺序是指处理节点中的数据的顺序。
已知中序遍历和任一其他遍历的情况下,可以还原一个二叉树。
一个直观的方法是按前序或者反转的后序插入一个按中序排序的搜索树。
已知前序和中序也可以还原一棵树,但是不能知道二叉树中一个节点唯一的子树是在左边还是右边。
事实上也可以把左右的顺序反过来。
这些由根开始的遍历方法也适用于特定的一个子树。
森林
她蓝少沁,在最狼狈的时候遇上他唯一的亲人,她的舅舅,一个冷血无情的人,天使般的面孔下有着一颗永远也捂不热的心。他是魔鬼,是噩梦,更是ampampgt精彩片段殷琉翰,放过我,我不过是你用来报复殷家的工具而已,现在你已经达到目的,我也不再有利用价值,你身边也已经有了一位配得上你身份的女人。不,你怎么会没有价值,你的价值就是用你的身体来取悦我,我亲爱的外甥女,怎么样?这乱伦的滋味你也很迷恋吧?一滴眼泪从眼角滑落,明明他已经有了心爱的人,为什么还要来招惹她,即使她是她的女儿,难道她就该死吗?那一夜,蓝少沁被禁锢在那张大床上,狠狠的占有,那极致俊逸的脸庞,邪魅的眼眸中满是欲望的光芒。她逃,而他无所不用其极的逼迫,逼着她与他一起沉沦那一夜,她拖着破碎不堪的身子,连夜从他的别墅逃离三年后,她再次踏上这片土地,不再卑微,不再软弱...
...
穿越到异次元魔方空间,陈雨泽觉醒卡牌系统。开局直接觉醒日向宁次模板,获得血继限界白眼!什么?六个方位随机选择道路?选错方向还会有生命危险??陈雨泽可不管,直接白眼看透一切!当其他玩家还在魔方空间中垂死挣扎时,陈雨泽已经回到驻地。他摇晃着高脚红酒杯,吃着刚煎好的牛排,拍照发布个人动态。并配文谢邀,人在驻地,刚探索完回来。玩家看到动态后集体发声只有我们是在求生,而陈雨泽这个变...
阔太太唐婉跟神秘的情人在宾馆销魂的时候,儿子忽然失踪了,案情正自扑朔迷离,丈夫忽然又出了车祸,一切都似乎有一只看不见的手在幕后操纵,却又无迹可寻,不曾想,最终侦破此案的关键证据竟然要依靠一个小保安。...
...
...