文档章节

多叉树,统计每个节点的子节点的个数。

liuxiaofan
 liuxiaofan
发布于 2018/08/16 22:48
字数 351
阅读 171
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

原理:多叉树有继承关系,即有上级,每个节点都知道自己的上级是谁。从最尾部的节点数,每数一个,父节点加一,同时把自己有多少子节点告诉父节点。

注意点:从数据库查数据的时候,要倒叙查询,确保最后的数据先被查询

       // 这里有一点要注意,foreach 中的$user并不是最新的,所以用引用来找到最新的,一个数组连续两次用foreach的话,要换一下item,不然有问题
       foreach ($users as  &$user) {
            if(isset($users[$user['pid']])){
                // 向父节点报告自己的存在
                if(isset($users[$user['pid']]['sum'])) {
                    $users[$user['pid']]['sum']++;
                } else {
                    $users[$user['pid']]['sum']=1;
                }
                // 查询自己直接下级的数量,并向上累计。在这里,当前节点的下级一定全部查询完了,因为下级的id肯定比当前节点大,而数据又是按照id倒序查询的。
                if (isset($user['sum'])) {
                    $users[$user['pid']]['sum'] += $user['sum'];
                }
            }
        }

 

© 著作权归作者所有

liuxiaofan
粉丝 0
博文 95
码字总数 38736
作品 0
枣庄
后端工程师
私信 提问
JS数据结构第五篇 --- 二叉树和二叉查找树

一、二叉树的基本概念 从逻辑结构角度来看,前面说的链表、栈、队列都是线性结构;而今天要了解的“二叉树”属于树形结构。 1.1 多叉树的基本概念,以上图中“多叉树”为例说明   节点:多...

TDX
08/19
0
0
数据结构-03-二叉树(Binary Tree)

Binary Tree - 二叉树 二叉树是每个节点最多有两个子树的树结构,子树有左右之分,二叉树常被用于实现二叉查找树和二叉堆。 学二叉树,先来明确两个概念,何为二叉树的度和深度? 二叉树结点...

Corwien
2016/06/17
75
0
【数据结构】【平衡树】Treap

百度百科 Pre_knowledge     二叉排序树     二叉排序树是一棵二叉树。每个节点对应一个权值v,对于每个节点,一定满足如下性质:         二叉排序树的每个节点的左子树要么...

一扶苏一
2018/07/29
0
0
面试旧敌之红黑树(直白介绍深入理解)

读完本文你将了解到: 什么是红黑树 红黑树的 5 个特性 红黑树的左旋右旋 红黑树的平衡插入 插入后调整红黑树结构 红黑树的平衡删除 删除后的结构调整 总结 Thanks 上篇文章 《重温数据结构:...

群星纪元
04/05
38
0
[算法总结] 20 道题搞定 BAT 面试——二叉树

本文首发于我的个人博客:尾尾部落 0. 几个概念 完全二叉树:若二叉树的高度是h,除第h层之外,其他(1h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没...

繁著
2018/09/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

web前端入门到实战:图解原生dialog标签(非常详细)

在html5中,新增了很多语义化的标签。如footer、header之类的,今天的主角是dialog标签 顾名思义,就是用来定义对话框的。目前只有Chrome和Safari支持该标签,所以用的不多,不过确实挺好用的...

梦想编程
23分钟前
3
0
一些php常用函数积累

本文链接<?php// id: ecffe70d3af54df9bad97b61918ace7d global $ct_path, $ct_log_path;$log_path = "test_php.txt";// 是否先log到buffer,再通过CT_flush()一次性写入文件$......

一字见心
24分钟前
3
0
IntelliJ idea中 注释代码折叠

visual studio中有#region 可以折叠代码,IntelliJ idea 中也有类似功能 //region 描述代码//endregion

format
24分钟前
4
0
oracle表中更改主键

一、数据表有主键但无主键约束名 先删除之前的主键,后添加主键 ,执行SQL: a. alter table 表名 drop primary key; b. alter table 表名 add primary key(想要更改的字段名称); 二、数据表...

_Somuns
26分钟前
3
0
jQuery AJAX提交表单

我有一个名称为orderproductForm的表单,输入的数量不确定。 我想做某种jQuery.get或ajax或类似的事情,它将通过Ajax调用页面,并发送所有形式为orderproductForm的输入。 我想一种方法是做类...

技术盛宴
31分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部