演算法雜談 關於二叉樹

2021-06-19 10:05:14 字數 1188 閱讀 9726

本例中涉及二叉樹的建立、先序遍歷、廣度優先遍歷、深度

二叉樹的廣度優先遍歷

思路;用乙個鍊錶儲存每一層的節點,然後通過遞迴得到解,詳見gdyx函式

#include #include #include //二叉樹的結構體

typedef struct btreebtree;

//建立一顆二叉樹

void create(btree *root)

if(a[1]<0)root->right=null;

else

//遞迴構造二叉樹

create(root->left);

create(root->right);

}//先序遍歷,其實也是深度優先遍歷的結果

void preorder(btree *root)

//左右子節點只有其一

else if(root->left&&!root->right)

else if(!root->left&&root->right)

//無任何的子節點

else

}//計算二叉樹的深度

int depth(btree *root)

}//用於廣度優先遍歷的單鏈表

typedef struct btlist

btlist;

//在單鏈表的末尾插入節點

void insertail(btlist **l,btlist *p)

}//**單鏈表所佔的儲存空間

void freelist(btlist *l)

}//廣度優先遍歷二叉樹

void gdyx(btlist *list)

//如果該節點有右孩子,則將右孩子存入節點鏈

if(nd->node->right!=null)

nd=nd->next;

} //遞迴遍歷下一層的節點鏈

gdyx(l);

//**記憶體

freelist(l);

}int main()

圖例:

執行結果:

演算法雜談 二叉樹

如下圖,如果需要新增節點 20,則位置在綠色的地方 15 因為20 15,所以作為右節點新增 在這裡插入描述 如果需要新增節點 60,因為找不到符合規則的位置,最後查詢的地方會是70,所以作為70的左節點 葉子節點 在這裡插入描述 這個看著有點繞,我們來看個例子,假設下圖需要刪除根節點 50 我們找...

關於二叉樹

1.二叉樹的定義 二叉樹是每個節點最多有兩個子樹的結構。它有5種基本形態 二叉樹可以是空集 根可以有空的左子樹或者右子樹 或者左 右子樹均為空。2.二叉樹的性二叉樹有以下幾個性質 todo 上標和下標 性質1 二叉樹第i層上的節點數最多為 性質2 深度為k的二叉樹至多有 性質3 包含n個節點的二叉樹...

二叉樹演算法

include include include define elementtype int node structure constructor typedef struct bt binarytreenode,btroot function declear inorder btroot root...