滿k叉樹的編號問題
背景
一棵高為h的滿k叉樹具有如下性質:根節點所在層次為0;第h層上的結點都是葉子結點;其餘各層上每個結點都有k棵非空子樹。現在按照層次自頂向下,同一層自左向右,順序從1開始對全部結點進行編號。
問題
首先得到一些常規的結論,方便後面使用:第l層有kl個結點;前l層有i=0∑lkl=k−1kl+1−1個結點。
現在設一結點編號為i,試推導: (1)第m個孩子的編號; (2)雙親結點的編號。
不妨假設該結點在第l層(m>0),則前l−1層有Nl−1個結點。因此第l層中,在結點i左邊的結點數為a=i−Nl−1−1個。
因此從結點i到結點i的第一個孩子,需要經過ak個結點i兄弟的孩子。可知第m個孩子的編號i(m)=Nl+ak+m=(i−1)k+m+1,其中Nl是前l層的結點總數。
要求雙親結點的編號,理論上反解上面的表示式即可。涉及到除法,可以這樣考慮。設n為結點ip的子女,則(ip−1)k+2≤n≤ipk+1. 因此對於結點i我們可以得到其雙親結點編號ip=⌊ki−2⌋+1.
相關推薦
滿k叉樹的編號問題
背景 一棵高為hhh的滿kkk叉樹具有如下性質:根節點所在層次為000;第hhh層上的結點都是葉子結點;其餘各層上每個結點都有kkk棵非空子樹。現在按照層次自頂向下,同一層自左向右,順序從111開始對全部結點進行編號。 問題 首先得到一些常規的結論,方便後面使用
n層滿k叉樹總共有多少個節點
節點 n) 計算 n-1 等比數列 數列 這就是 ... nbsp 2叉樹 1 3 7 對應公式為(2^n-1)/1 3叉樹 1 4 13 對應公式為(3^n-1)/2 4叉樹 1 5 21對應公式為(4^n-1)/3 ... n層k叉樹,總共有(k^n-1)/k-1
python實現滿二叉樹遞歸循環
location pre tar 頂點 遞歸循環 int tle 計算 個數 一、二叉樹介紹點這片文章 二叉樹及題目介紹 例題: 有一顆滿二叉樹,每個節點是一個開關,初始全是關閉的,小球從頂點落下, 小球每次經過開關就會把它的狀態置反,這個開關為關時,小球左跑,為開時右跑。
數據結構與算法(八)-二叉樹(斜二叉樹、滿二叉樹、完全二叉樹、線索二叉樹)
大型 結點 develop pac string col 限制 也會 斐波那契數 前言:前面了解了樹的概念和基本的存儲結構類型及樹的分類,而在樹中應用最廣泛的種類是二叉樹 一、簡介 在樹型結構中,如果每個父節點只有兩個子節點,那麽這樣的樹被稱為二叉樹(Binary
二叉樹基本概念(滿二叉樹、完全二叉樹,滿二叉樹,二叉樹的遍歷)
1. 二叉樹 二叉樹是每個節點最多有兩個子樹的樹結構。它有五種基本形態:二叉樹可以是空集;根可以有空的左子樹或右子樹;或者左、右子樹皆為空。 性質1:二叉樹第i層上的結點數目最多為 2{i-1} (i≥1)。性質2:深度為k的二叉樹至多有2{k}-1個結點(k≥1)
UVa712 S-Trees滿二叉樹
題目意思就是給你一個滿二叉樹,然後輸入命令查詢,0是向左,1是向右。比較簡單,直接上程式碼。 #include<iostream> #include <string> #include <string.h> using namespace std; int
關於滿二叉樹
對於國內的滿二叉樹 從圖形形態上看,滿二叉樹外觀上是一個三角形。 從數學上看,滿二叉樹的各個層的結點數形成一個首項為1,公比為2的等比數列。因此由等比數列的公式,滿二叉樹滿足如下性質。 1、一個層數為k 的滿二叉樹總結點數為: 。因此滿二叉樹的結點樹一定是奇數個。
[樹] 6.49 判斷完全二叉樹、滿二叉樹 - C語言
題目來源:嚴蔚敏《資料結構》C語言版本習題冊 6.49 // 6.49 編寫演算法判別給定二叉樹是否為完全二叉樹 Status BiTreeIsComplete(BiTree T) { // 思路:完全二叉樹的層次遍歷應該是沒有NULL的 // 實現:把所有的結點都
判斷任意給定的二叉樹是否為滿二叉樹
設二叉樹採用二叉連結串列儲存,試編寫一個判斷任意給定的二叉樹是否為滿二叉樹的演算法。 #include<stdio.h> #include<stdlib.h> typedef struct BiTnode { &
pat(甲)1064--(搜尋二叉樹+滿二叉樹)
1064 Complete Binary Search Tree (30 分) A Binary Search Tree (BST) is recursively defined as a binary tree which has the following proper
完全二叉樹,滿二叉樹,霍夫曼樹
霍夫曼樹:每個節點要嘛沒有子節點,要麼有兩個子節點 完全二叉樹:滿二叉樹的一部分或者全部。 滿二叉樹:每個父親都有2個葉子。 1 1 / \
完全二叉樹/ 滿二叉樹/二叉樹遍歷(前序、中序、後序、層序遍歷)
1.概念 在電腦科學中,二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。二叉樹常被用於實現二叉查詢樹和二叉堆。二叉樹的每個結點至多隻有二棵子樹(不存在度大於2的結點),二叉樹的子
二叉樹,完全二叉樹,滿二叉樹,二叉排序樹,平衡二叉樹,紅黑樹,B數,B-樹,B+樹,B*樹(一)
二叉樹 二叉樹:二叉樹是每個節點最多有兩個子樹的樹結構; 是n(n>=0)個結點的有限集合,它或者是空樹(n=0),或者是由一個根結點及兩顆互不相交的、分別稱為左子樹和右子樹的二叉樹所組成。 完全二叉樹 完全二叉樹:除最後一層外,每一層上的結點數均達到最
二叉樹,完全二叉樹,滿二叉樹,二叉排序樹,平衡二叉樹,紅黑樹,B數,B-樹,B+樹,B*樹(二)
二叉樹,完全二叉樹,滿二叉樹,二叉排序樹,平衡二叉樹,紅黑樹,B數,B-樹,B+樹,B*樹(一): BST樹 即二叉搜尋樹: 1.所有非葉子結點至多擁有兩個兒子(Left和Right); 2.所有結點儲存一個關鍵字;
滿二叉樹、完全二叉樹、平衡二叉樹、哈夫曼樹
滿二叉樹:除了葉節點外每一個結點都有左右子女且葉節點都處在最底層的二叉樹。 這個滿二叉樹應該很好想象,就是一顆非常完美的樹,除了葉節點其他節點都有兩個孩子。 完全二叉樹:只有最下面的兩層結點度小於2,並且最下面一層的結點都集中在該層最左邊的若干位置的二叉樹。 也
滿二叉樹、完全二叉樹、完美二叉樹等概念的解釋
二叉樹:樹中每個節點至多有兩個子節點 二叉搜尋樹:對於樹中任何節點,如果其左子節點不為空,那麼該節點的value值永遠 >= 其左子節點;如果其右子節點不為空,那麼該節點的value值永遠 <= 其右子節點 滿二叉樹:樹中除了葉子節點,每個節點都
完全二叉樹和滿二叉樹的區別+完全二叉樹求節點問題
今天覆習了下二叉樹的相關知識,發現很多都忘掉了,所以在此記錄下 滿二叉樹 如圖,顧名思義,滿二叉樹說白了其實就是除了最後一層,所有節點都有兩個孩子, 所以: 假設現在有一棵深度為N的滿二叉樹: 總結點數就是2^N-1(計算公式:
完全二叉樹與滿二叉樹
去筆試了很多次,每次都有有關於二叉樹的題目,而且其中最多的是關於完全二叉樹,然而完全二叉樹在哥心中的形態一直很模糊,究其原因是我把完全二叉樹和滿二叉樹搞混了。其實滿二叉樹是完全二叉樹的特例,因為滿二叉樹已經滿了,而完全並不代表滿。所以形態你也應該想象出來了吧,滿指的是出了葉
【C++】滿二叉樹與完全二叉樹的區別及判斷
#include<iostream> #include<queue> using namespace std; struct BinaryTreeNode { char _data; BinaryTreeNode*_left; BinaryTreeNode*_right; Bi
二叉樹,完全二叉樹,滿二叉樹,平衡二叉樹的區別
度:指的是一個節點擁有子節點的個數。如二叉樹的節點的最大度為2。 深度:數的層數,根節點為第一層,依次類推。 葉子節點:度為0的節點,即沒有子節點的節點。 樹:樹中的每一個節點,可以有n(後續節點)個子節點,但是每個節點只有一個前驅節點。 二叉樹:除了葉子節點外,每個節點