1.遍歷:前序遍歷、中序遍歷、後序遍歷、層次遍歷
前三者使用遞迴實現、層次遍歷使用佇列實現
2.計算某節點的高度:遞迴
3.計算以某節點為根節點的二叉樹的節點個數:遞迴
#include
#include
#include
using
namespace std;
template
<
class
t>
struct binarytreenode//定義二叉樹節點
binarytreenode
(const t& theelement)
binarytreenode
(const t& theelement, binarytreenode
* left, binarytreenode
* right)};
template
<
class
t>
intheight
(binarytreenode
* node)
//獲得某一節點下二叉樹的高度
template
<
class
t>
intcountnode
(binarytreenode
* node)
//獲取某一節點下二叉樹的節點個數
template
<
class
t>
class
binarytree
void
createtree()
//建立二叉樹
t l, r;
cin >> l >> r;
if(l !=-1
)if(r !=-1
)}nodearray.
clear()
;for
(int i =
0; i < treesize; i++
) nodearray.
push_back
(nullptr);
getarray
(root);}
void
preorder()
void
inorder()
void
postorder()
void
levelorder()
void
level_height()
void
level_countnode()
private
: binarytreenode
* root;
//根節點
int treesize;
//節點個數
vector
*> nodearray;
//按順序存放節點指標
void
preorder
(binarytreenode
* node)
//前序遍歷
}void
inorder
(binarytreenode
* node)
//中序遍歷
}void
postorder
(binarytreenode
* node)
//後序遍歷
}void
getarray
(binarytreenode
* node)
//前序遍歷二叉樹,把各個節點的指標按順序存放在指標陣列中
}void
levelorder
(binarytreenode
* node)
//層次遍歷
}void
level_height
(binarytreenode
* node)
//利用之前建立好的指標陣列,可直接按順序輸出以各節點為根節點的二叉樹的高度
}void
level_countnode
(binarytreenode
* node)
//利用之前建立好的指標陣列,可直接按順序輸出以各節點為根節點的二叉樹的節點個數}}
;
二叉樹四種遍歷方式
二叉樹的四種遍歷方式 include include using namespace std 二叉樹節點的定義 class treenode 遞迴方式,每個結點只遍歷一次,時間複雜度o 1 遞迴最多呼叫n次,空間複雜度o n 先序 根 遞迴左 遞迴右 void preorder treenode r...
輸出二叉樹葉子節點 葉子節點數目 二叉樹高度
include include 輸出二叉樹葉子節點 葉子節點數目 二叉樹高度 include typedef int datatype int count 0 用於統計葉子節點的數目 typedef struct node bitnode,bittree void creatbitree bittr...
二叉樹的四種遍歷方式
前言最近做題用到很多次二叉樹的遍歷,因此寫這篇文章記錄二叉樹的四種遍歷方式。首先為了方便,先假設二叉樹的結構如下 struct treenode 對於程式的輸入為 3 根節點root 9 20 4 10 15 71.二叉樹的層次遍歷 層次遍歷就是依次遍歷樹的每一層。借助佇列,可以輕鬆實現。void ...