利用先序、中序、後序、層次遍歷二叉樹
#include
#include
using
namespace std;
#define maxsize 1024
typedef
struct node btnode;
//struct node 的別名
typedef
struct quene sqqueue;
//struct queue 的別名
//初始化佇列
void
initqueue
(sqqueue*
& q)
//判斷佇列是否為空
bool
emptyqueue
(sqqueue*
& q)
else
}//進佇列
bool
enqueue
(sqqueue*
& q, btnode*
& bt)
q->rear++
;//頭指標加 1
q->data[q-
>rear]
= bt;
//傳值
return
true
;//返回真
}//出佇列
bool
dequeue
(sqqueue*
& q, btnode*
& bt)
q->front++
;//尾指標加 1
bt = q-
>data[q-
>front]
;//取值
return
true
;//返回真
}//建立二叉樹
intcreatebtnode
(btnode*
& bt,
char
* str,
int n)
else
}return n;
//返回 n,記錄字串使用到**了
}//先序遍歷
void
preorder
(btnode*
& bt)
}//中序遍歷
void
inorder
(btnode*
& bt)
}//後序遍歷
void
postorder
(btnode*
& bt)
}//層次遍歷
void
levelorder
(btnode*
& bt)
while
(emptyqueue
(q)!=
true)if
(bt-
>rchild !=
null
)//一層一層的把節點存入佇列
}//當沒有孩子節點時就不再迴圈
}int
main()
構建二叉樹 遍歷二叉樹
陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...
二叉樹遍歷
二叉樹的遍歷非常重要,但對已一棵比較複雜的樹,要寫出它的先 中 後序遍歷,往往不是那麼簡單,也很容易犯錯。這裡介紹一種比較直觀且不容易犯錯的方法。對於圖1所示的二叉樹,要寫出它的先 中 後序遍歷,往往很容易出錯。圖 1 其實,我們可以用圖2中的紅線描畫出二叉樹的輪廓。圖 2 而對於樹上的每乙個節點,...
二叉樹遍歷
描述 華為實習生招聘,有一道類似如下的題目 給出二叉樹,如圖1所示 圖 1 二叉樹 要求給出中序遍歷的結果。下面分別就前序遍歷 中序遍歷 後序遍歷進行分析。規律 前序遍歷 根在前 子樹在根後且左子樹比右子樹靠前 中序遍歷 根在中 左子樹在根左邊,右子樹在根右邊 後序遍歷 根在後 子樹在根前且左子樹比...