當前位置:首頁 » 操作系統 » 深度演算法

深度演算法

發布時間: 2022-01-08 11:20:16

❶ 求二叉樹的深度演算法(具體點)

具有
n
個結點的完全二叉樹的深度為

log2n
+1
。以2為底的N的對數加1

❷ 怎樣理解深度優先演算法和廣度優先演算法

胡說八道.... 深度優先:前序遍歷 廣度優先:按層遍歷

❸ 寫一個求二叉樹的深度的演算法

#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
char data;
struct node *left,*right;
}Node,*PNode;
PNode createBtree(PNode root)//創建二叉樹,控制台下輸入,基於先序遍歷輸入
{
char data;
scanf("%c",&data);
if (data==' ')
{
root=NULL;
return root;
}
root = (PNode)malloc(sizeof(Node));
root->data = data;
root->left = createBtree(root->left);
root->right = createBtree(root->right);

return root;
}

int depth(PNode root)//這就是你要的函數。
{
int ld,rd;
if (root==NULL)
{
return 0;
}
ld = 1+depth(root->left);
rd = 1+depth(root->right);
return ld>rd?ld:rd;
}
int main()
{
PNode root=NULL;
root = createBtree(root);
printf("%d",depth(root));
return 0;
}

為了測試,寫了二叉樹的建立程序;
如下輸入可以看到結果
虛節點用空格輸入的。例如你輸入
先序遍歷
234空格空格5空格6空格空格7空格空格回車就可以看到結果。
另外,本演算法是從1開始算深度的,就是根節點是深度下。

❹ 設計演算法求二叉樹的深度

#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
char data;
struct node *left,*right;
}Node,*PNode;
PNode createBtree(PNode root)//創建二叉樹,控制台下輸入,基於先序遍歷輸入
{
char data;
scanf("%c",&data);
if (data==' ')
{
root=NULL;
return root;
}
root = (PNode)malloc(sizeof(Node));
root->data = data;
root->left = createBtree(root->left);
root->right = createBtree(root->right);

return root;
}

int depth(PNode root)//這就是你要的函數。
{
int ld,rd;
if (root==NULL)
{
return 0;
}
ld = 1+depth(root->left);
rd = 1+depth(root->right);
return ld>rd?ld:rd;
}
int main()
{
PNode root=NULL;
root = createBtree(root);
printf("%d",depth(root));
return 0;
}

為了測試,寫了二叉樹的建立程序;
如下輸入可以看到結果
虛節點用空格輸入的。例如你輸入
先序遍歷
234空格空格5空格6空格空格7空格空格回車就可以看到結果。
另外,本演算法是從1開始算深度的,就是根節點是深度下。
樹的圖形參考
http://hi..com/huifeng00/blog/item/c1e37a4d59310b3caec3ab32.html

❺ 深度緩存演算法包括哪些步驟

深度緩存(Z-buffer)演算法是一種典型的、簡單的圖象空間面消隱演算法。該演算法需要一個深度緩存數組 ZB,此外還 需要一個顏色屬性數組 CB ,它們的大小與屏幕上像素點的個數相同。 Z-buffer 演算法的步驟如下:
(1)初始化 ZB 和 CB,使得 ZB(i,j)=Zmax,CB(i,j)=背景色,i=1,…, m; j=1,…,n。
(2)對多邊形 P,計算它在點(i,j)處的深度值 zi,j。
(3)若 zi,j< ZB(i,j),則 ZB(i,j)=zi,j,CB(i,j)=多邊形 P 的顏色。
(4)對每個多邊形重復(2) 、 (3)兩步,最終在 CB 中存放的就是消隱後的圖形。 這個演算法的關鍵在第(2)步,要盡快判斷出哪些點落在一個多邊形內,並盡快求出一個點的深度值。這里需要應用 多邊形點與點之間的相關性,包括水平相關性和垂直相關性。

❻ 深度優先演算法 和 寬度優先演算法 的優缺點

1、深度優先演算法佔內存少但速度較慢,廣度優先演算法佔內存多但速度較快,在距離和深度成正比的情況下能較快地求出最優解。
2、深度優先與廣度優先的控制結構和產生系統很相似,唯一的區別在於對擴展節點選取上。由於其保留了所有的前繼節點,所以在產生後繼節點時可以去掉一部分重復的節點,從而提高了搜索效率。
3、這兩種演算法每次都擴展一個節點的所有子節點,而不同的是,深度優先下一次擴展的是本次擴展出來的子節點中的一個,而廣度優先擴展的則是本次擴展的節點的兄弟點。在具體實現上為了提高效率,所以採用了不同的數據結構。

❼ 請寫出計算二叉樹的深度的演算法

typedef struct tree//二叉樹的定義
{ char data; struct tree *lchild,*rchild; }TREE,*Tree;

void create(Tree t)//創建一棵二叉樹
{ char ch; scanf("%c",&ch); if(ch=='#') t=NULL;
else { t->data=ch; create(t->lchild); create(t->rchild); }
}
int deep(Tree t)//深度演算法
{ if(!t) return 0; else { ld=deep(t->lchild); rd=deep(t->rchild);
if(ld>rd) return rd+1; else return ld+1;
}
void main()//主函數
{ Tree t; create(t); printf("%d\n",deep(t)); }

❽ 關於遞歸演算法求二叉樹深度演算法

u,v 分別求出當前節點左子樹和右子樹的深度(高度),
然後當前節點的 深度就等於左右子樹裡面較大的那個+1.

if (u>n) return (u+1)
return (v+1)
這句就是返回較深的+1.

u=height(T->lchild);
v=height(T->rchild);

這兩句就是遞歸的調用,求深度了。

if (T==NULL) return 0;

這個就是終止條件了,如果沒有子節點就返回。

熱點內容
單片機android 發布:2024-09-20 09:07:24 瀏覽:759
如何提高三星a7安卓版本 發布:2024-09-20 08:42:35 瀏覽:659
如何更換伺服器網站 發布:2024-09-20 08:42:34 瀏覽:306
子彈演算法 發布:2024-09-20 08:41:55 瀏覽:284
手機版網易我的世界伺服器推薦 發布:2024-09-20 08:41:52 瀏覽:812
安卓x7怎麼邊打游戲邊看視頻 發布:2024-09-20 08:41:52 瀏覽:158
sql資料庫安全 發布:2024-09-20 08:31:32 瀏覽:89
蘋果連接id伺服器出錯是怎麼回事 發布:2024-09-20 08:01:07 瀏覽:503
編程鍵是什麼 發布:2024-09-20 07:52:47 瀏覽:654
學考密碼重置要求的證件是什麼 發布:2024-09-20 07:19:46 瀏覽:479