本文章主要包括了以下內容:
建立二叉樹類。二叉樹的儲存結構使用鍊錶。
供操作:前序遍歷、中序遍歷、後序遍歷、層次遍歷、計算二叉樹結點數目、計算二叉樹高度。
接收鍵盤錄入的二叉樹前序序列和中序序列(各元素各不相同),輸出該二叉樹的後序序列。
下面是c++**:
#include
#include
#include
using
namespace
std;
#include
#include
#include
#include
#include
using
namespace
std;
class binarytreenode//二叉樹的節點類
binarytreenode(char c)
binarytreenode(char c, binarytreenode* left, binarytreenode* right)
char data;
binarytreenode* leftchild;
binarytreenode* rightchild;
};class node //佇列類中用鍊錶存
node(binarytreenode *item, node* link = null)
};//佇列類,作為層次遍歷的輔助資料結構用
class linkqueue
; bool empty()
void outqueue(binarytreenode * &e)//出佇列
void inqueue(binarytreenode * &e)//入佇列
};//二叉樹類
class binarytree
void getroot(char* c);
void insertleftchild(binarytreenode* t, char c)//插入左孩子
void insertrightchild(binarytreenode* t, char c)//插入右孩子
void preorder(binarytreenode *t)//前序遍歷
}void inorder(binarytreenode* t)//中序遍歷
}void postorder(binarytreenode* t)//後續遍歷
}void levelorder(binarytreenode* t)//層次遍歷
}void preorderforcount(binarytreenode* t)//用了前序遍歷的方法來計算二叉樹節點數目
}int height(binarytreenode* t)//返回乙個節點的高度
int size()//返回二叉樹節點數目
binarytreenode* root;
int count = 0;
};//前序中序生成後序
//前序遍歷的第乙個元素為根節點,在中序遍歷中找到這個根節點,從而可以將中序遍歷分為左右兩個部分,左邊部分為左子樹的中序遍歷,
//右邊部分為右子樹的中序遍歷,進而也可以將前序遍歷除第乙個元素以外的剩餘部分分為兩個部分,第乙個部分為左子樹的前序遍歷,第二
//個部分為右子樹的前序遍歷。
//上述分析結果,可以遞迴呼叫構建函式,根據左子樹、右子樹的前序、中序遍歷的結果輸出後序遍歷的結果。
void generatepostorder(char* preorder, char* inorder, int length)
//左子樹遞迴
generatepostorder(preorder + 1, inorder, rootindex);
//右子樹遞迴
generatepostorder(preorder + rootindex + 1, inorder + rootindex + 1, length - (rootindex + 1));
cout
<< t->data;
return;
}int main()
二叉樹操作
最近在溫習資料結構,把書中的 寫了一遍,下面是二叉樹的基本操作,包括 1 四種遍歷二叉樹的方法 前序遍歷 中序遍歷 後序遍歷和層序遍歷,其中又包括了遞迴的和非遞迴 2 兩種建立二叉樹的方法 根據二叉樹的前序和中序序列建立二叉樹和根據二叉樹的中序後序序列建立二叉樹。1.二叉樹的儲存結構 headfil...
二叉樹操作
includeusing namespace std struct btree 建立二叉樹 void createtree btree t else 遞迴,先序遍歷 void preorder btree temp 遞迴,中序遍歷 void inorder btree temp 遞迴,後序遍歷 vo...
二叉樹操作
思路 使用遞迴進行建立。public static heronode createtree heronode node else return node 思路 使用遞迴進行複製 public static heronode copybinarytree heronode node 建立乙個臨時節點,...