二叉樹的建立 遍歷等基本操作

2021-09-26 23:43:08 字數 2027 閱讀 7344

話不多說,直接上**。

};//二叉樹建構函式,對屬性元素進行初始化的操作

binarytree::binarytree()

//二叉樹的析構函式,不進行實現

binarytree::~binarytree()

//二叉樹的插入操作

//到底二叉樹的插入應該如何進行

//還是使用上述的佇列方法進行實現

void binarytree::creat()

else

else

} }

} bool binarytree::empty()

void binarytree::preorder(node * btnode)

if(stk.empty())

break;

current = stk.top();

stk.pop();

current = current->right;

} }void binarytree::inorder(node * btnode) //現在出現的是最左邊節點的左邊節點,為空值

if(stk.empty())

temp = stk.top(); //取出棧頂的節點,並將棧頂元素彈出

stk.pop();

cout

temp = temp->right; }}

void binarytree::postorder(node * btnode)

topcurrent = stk.top(); //得到棧頂元素

//判斷右樹是否被訪問?

if(topcurrent->right == null || topcurrent->right == previous)

//右樹沒有被訪問,

else

}

}void binarytree::preorderre(node * btnode)

}void binarytree::inorderre(node * btnode)

}void binarytree::postorderre(node * btnode)

}//按照層次化的順序對二叉樹進行遍歷

//使用佇列作為輔助工具,類似於建立二叉樹的過程

//就是按照從上到下,從左到右的順序將樹中的節點加入到佇列中即可

void binarytree::levelorder(node * btnode)

if(que.front()->right)

que.pop();

} }//計算二叉樹中節點的個數只需要分別返回左邊節點以及右邊節點的個數再加上1(兩邊子樹的根節點)

int binarytree::size(node * btnode)

else

return (size(btnode->left) + 1 + size(btnode->right));

} //計算二叉樹的高度

//如果已知二叉樹的節點個數,則可以使用相關的公式進行計算

//節點數n,高度h 2 ^(h-1) - 1 <= n <= 2 ^ h

int binarytree::height(int size)

return height;

} //利用二叉樹最左邊的節點所處的層數代表整體的層數 (僅適用於完全二叉樹)

int binarytree::height(node * btnode)

return height;

}int main(){

binarytree bt;

cout<

二叉樹的構建,遍歷等基本操作

void createbtnode btnode t 構建二叉樹 void prebtnode btnode t 先序遍歷二叉樹 void inbtnode btnode t 中序遍歷二叉樹 void postbtnode btnode t 後序遍歷二叉樹 int depthbtnode btnod...

二叉樹基本操作 二叉樹的建立與遞迴遍歷

建立的二叉樹如下 來構建上圖的二叉樹 詳細 如下 include using namespace std typedef char datatype 二叉樹的左右鏈表示,也叫做二叉鍊錶表示 typedef struct node node typedef node btree btree precr...

二叉樹的建立 遍歷1 建立二叉樹

談二叉樹,如果二叉樹都沒有正確的建立出來,那豈不是紙上談兵!括號表示式 表示方法 1.括號 括號內的東西是括號前的元素的孩子 2.逗號 逗號是為了區分左右孩子 演算法分析 給出乙個如上的括號表示式 a b d g e,f 再利用棧這個資料結構,分析一下 掃瞄整個括號表示的字串,這個字串中只有四種字元...