Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 三元树中的插入节点_Mysql_Sql_Ternary Tree - Fatal编程技术网

Mysql 三元树中的插入节点

Mysql 三元树中的插入节点,mysql,sql,ternary-tree,Mysql,Sql,Ternary Tree,我有一棵三元树 我已经创建了一个表 CREATE TABLE `user_tree` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `parent_ID` int(11) NOT NULL, `next_pool` tinyint(1) NOT NULL DEFAULT '0', `last_update` timestamp(6) NOT NULL DEFAULT CURRENT_TIMES

我有一棵三元树

我已经创建了一个表

CREATE TABLE `user_tree` 
( `ID` int(11) NOT NULL AUTO_INCREMENT, 
`name` varchar(100) NOT NULL,
`parent_ID` int(11) NOT NULL,  
`next_pool` tinyint(1) NOT NULL DEFAULT '0', 
`last_update` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), 
 PRIMARY KEY (`ID`)) ENGINE=MyISAM AUTO_INCREMENT=23 DEFAULT CHARSET=latin1

如何使用mysql查询在图像中按给定顺序插入节点

您必须使用下一个规则集:

步骤1:选择具有空插槽的最小级别编号

步骤2:为该级别选择每个节点的最大空套接字数量

步骤3:为具有以上级别和空套接字数量的节点选择最小id

让我们找出节点30必须连接到的位置

第一步

每个级别的节点数量很容易计算:第一个级别包含1个节点,第二个-3个节点,第三个-9个节点。。。第N-3^N-1个节点。因此,您可以很容易地通过该节点编号计算要插入的节点的级别,例如,如果节点是第30个,则级别1为-1个节点,级别1+2为1+3=4,级别1+2+3为1+3+9=13个节点,级别1+2+3+4为1+3+9+27=40个节点,即节点将位于第4个级别

第二步

如上所述,前13个节点占据1-3层,因此第30个节点将是插入4层的第17个节点。此级别包含9个父节点,因此第17个节点将是其父节点roundUp17/9的第二个节点。它的父母是第三级的第六名,17分9秒

第三步

父节点1和父节点2的级别包含1+3=4个节点。所以第3层的第6个节点是1+3+6=10个节点


总共-节点30必须连接到节点10,并且它将是它的第二个子节点。

哪里有数据。在文件中或需要手动创建?我也想知道这些数据的格式:您可以通过树从顶部节点映射到底部分支,然后逐个分支将它们插入到数据库中当我插入新节点时,它应该自动插入以提及给定图像中的位置您如何插入?它是手动的,还是您有任何自动化的过程?下一个池列是什么?谢谢您的解释很好,我只是想知道,是否可以使用您的算法将树的上方扩展到第n级。@Gagandepsing是否可以将树的上方扩展到第n级,使用您的算法,这种方法没有级别限制,可以很容易地扩展。。