C語言學習 樹的學習

2021-10-02 21:15:23 字數 1483 閱讀 2617

這週我學習了樹的有關知識,將學到的一些東西寫下來。

first 樹的定義

1、有且只有乙個稱為根的節點;

2、有若干個互不相交的子樹,這些子樹本身也是一顆樹。

second 專業術語

樹的深度:從根節點到最低層,節點的層數 ,稱之為樹的深度。 根節點是第一層;

結點的層次:根節點為第一層,根節點的子節點為第2層,以此類推 ;

葉子節點:沒有子節點的節點;

非終端節點:實際就是非葉子節點;

結點度: 子節點的個數稱為度樹的度。

third 樹的分類

一般樹:任意乙個節點的子節點的個數不受限制;

二叉樹:任意乙個節點的子節點最多2個,且子節點的位置不可更改;

滿二叉樹:在不增加層數的情況下,不能在增加節點的情況就是滿二叉樹;

完全二叉樹:若設二叉樹的深度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h 層所有的結點都連續集中在最左邊,這就是完全二叉樹。

介紹完樹的基礎知識後,我參考網上大神的**,自己試了試二叉樹的c語言建立與列印,**如下:

二叉樹的建立、插入與列印

#include

#include

//二叉樹的結點

typedef

struct tree

treenode,

*tree;

//二叉樹結點的插入

tree insert_node

(tree root,

int node)

if(parentnode->data > node)

parentnode->left=newnode;

else

parentnode->right=newnode;

}return root;

}tree create_btree

(int

*data,

int len)

void

print_btree

(tree root)

intmain()

root=

create_btree

(nodelist,ans)

;//建立二叉樹

print_btree

(root)

;//遍歷列印二叉樹

return0;

}

通過樹的學習,我對鍊錶的認識又深了一層。並且想到乙個問題:單向鍊錶中的next與二叉樹裡的左右子樹,本質上講是一樣的。我又想到雙向煉表裡的prev和next,那麼鍊錶是如何識別前後左右的呢?經過思考,我認為,可以將頭結點或是父結點認為是乙個質點(或是乙個皮球),你可以在這個質點上進行連線,將你的新結點與之連線,而left、right、prev或是next只不過是連線用到的線,叫什麼名字無所謂,這樣書寫只是更有助於理解。

C語言學習

c語言學習 2013 3 26 1 編寫strcat s,t 函式,功能 將t指向的字串複製到s指向的字串的尾部。程式設計思路 1 通過while迴圈找到字串s的結束符。2 從找到的結束符開始將t複製到s,同時移動二者的指標。2 編寫函式strend s,t 如果字串t出現在字串s的尾部,該函式返回...

c語言學習

今天總結一些c 語言方面的知識 變數的概念 其值在作用域內可以改變的量稱為變數。乙個變數應該有乙個名字,並在記憶體中佔據一定儲存空間。區域性變數和全域性變數 區域性變數是在函式內作定義說明的,其作用域僅限函式內,離開該函式再使用這種變數是非法的。全域性變數也稱為外部變數,是在函式外部定義的變數,它不...

c語言學習

計算機工作基本原理 現代計算機可分為幾個部件 cpu 處理單元 擔負著絕大部分的計算工作。ram 隨機訪問儲存器 作為乙個工作區來儲存程式和檔案。硬碟 永久儲存器 即使在計算機關機時也能記下程式和檔案。以及各種外圍裝置 如鍵盤,滑鼠和監視器 用來提供人與計算器之間的通訊。cpu工作過程 從記憶體中獲...