遞迴遍歷二叉樹

2021-07-11 21:50:17 字數 1437 閱讀 4922

#include #include #include // 二叉鍊錶表示法

typedef struct tag_bitnode

bitnode;

// 先序遍歷

void xianxuorder(bitnode * root)

// 先根

printf("%c ", root->data);

// 左子樹

xianxuorder(root->lchild);

// 右子樹

xianxuorder(root->rchild);

}// 中序遍歷

void zhongxuorder(bitnode* root)

// 左子樹

zhongxuorder(root->lchild);

// 根節點

printf("%c ", root->data);

// 右子樹

zhongxuorder(root->rchild); }

// 後序遍歷

void houxuorder(bitnode* root)

// 左子樹

houxuorder(root->lchild);

// 右子樹

houxuorder(root->rchild);

// 根節點

printf("%c ", root->data);

}// 求樹的葉子節點數

int num = 0;

void leafnum(bitnode* root)

// 葉子節點

if (root->lchild == null && root->rchild == null)

// 遍歷左子樹

leafnum(root->lchild);

// 右子樹

leafnum(root->rchild);

}void leafnum_plus(bitnode* root, int *num)

// 葉子節點

if (root->lchild == null && root->rchild == null)

// 遍歷左子樹

leafnum_plus(root->lchild, num);

// 右子樹

leafnum_plus(root->rchild, num);

}int leafnum_plus2(bitnode* root)

if (root->lchild == null && root->rchild == null)

int left = leafnum_plus2(root->lchild);

int right = leafnum_plus2(root->rchild);

return left + right;

}void main()

二叉樹遞迴遍歷

編寫簡單的程式對下圖二叉樹進行遍歷 先訪問根節點 printf c root ch 再遍歷左子樹 recursion root lchild 再遍歷右子數 recursion root rchild 再遍歷左子樹 recursion root lchild 先訪問根節點 printf c root ...

二叉樹排序 (遞迴遍歷) 遍歷

package week3.day10 2020 8 3 15 08 zmx public class testbinarysorttree class binarysorttree else public void nodeprint class node public boolean addch...

二叉樹遍歷(遞迴 非遞迴)

二叉樹以及對二叉樹的三種遍歷 先根,中根,後根 的遞迴遍歷演算法實現,以及先根遍歷的非遞迴實現。node public class node public node left public node right public object value 遍歷訪問操作介面 public inte ce ...