C語言實現二叉樹

2021-08-29 05:29:24 字數 1801 閱讀 1694

1. c語言實現二叉樹中節點間最大距離

#includetypedef struct treenode

treenode;

/*我們可以將所有的結點的左右子樹的高度和計算一下,然後取出最大值,就是最遠的距離。

*/int getmaxdistance(treenode * root, int * maxdistance)

int leftdepth = 0;

int rightdepth = 0;

int maxdepth = 0; //左右子樹深度中最大的乙個

int leftaddright = 0;

//int maxdistance = 0;// 不同根節點中,左右子樹深度之和,最大的子樹

leftdepth = getmaxdistance(root->lchild, maxdistance);

rightdepth = getmaxdistance(root->rchild, maxdistance);

maxdepth = (leftdepth > rightdepth ? leftdepth : rightdepth) + 1;

leftaddright = leftdepth + rightdepth;

*maxdistance = *maxdistance > leftaddright ? *maxdistance : leftaddright;

return maxdepth;

}int main()

2. c語言實現計算二叉樹中第k層節點個數

#includetypedef struct treenode

treenode;

int numnodeklevel(treenode * root, int k)

int leftnum = 0;

int rightnum = 0;

int kthnum = 0;

if (k == 1)

leftnum = numnodeklevel(root->lchild, k - 1);

rightnum = numnodeklevel(root->rchild, k - 1);

kthnum = leftnum + rightnum;

return kthnum;

}

3. c語言實現二叉樹根節點到葉子節點的最小距離

#includetypedef struct treenode

treenode;

//根節點到葉子結點的最小的距離

int mindepth(treenode * root)

//如果是葉子結點則返回

if (root->lchild == null && root->rchild == null) //葉子結點

int minleft = 0;

int minright = 0;

int mindepth = 0;

//如果存在左子樹則計算左子樹的最小深度

if (root->lchild != null)

//如果存在右子樹則計算左子樹的最小深度

if (root->rchild != null)

if (root->rchild == null)

else if (root->lchild == null)

else

return mindepth;

}

二叉樹(C語言實現)

以下為用c語言實現的二叉排序樹,包含了樹的建立,銷毀,新增,刪除,修改,前 中 後 層序遍歷,深度,密度。include include include define type int typedef struct node node 建立結點 node creat node type data 新...

重建二叉樹 C語言實現

主要根據程式設計之美中利用前序與中序遍歷實現二叉樹的重構。其中對於前序遍歷中的每乙個節點都是當前子樹的根節點這一理論來對中序遍歷進行劃分。並且也實現了根據中序遍歷與後序遍歷實現二叉樹的重構,其中對於後序遍歷主要要注意其中後序遍歷的最後乙個元素表示的是根節點這一思想來實現。其中對於利用前序遍歷與中序遍...

C語言實現構建二叉樹

include include include typedef int elemtype typedef struct btreebt,b tree 增加新節點 brief insert node param root param nodevalue return b tree insert nod...