二叉樹的各種遍歷

2021-08-16 09:52:29 字數 875 閱讀 4972

//-----二叉樹

struct treenode

;void createtree(treenode *&root)

//樹遞迴先序遍歷

void preorder(treenode *root)

}//現將根節點入棧,然後以棧空為條件不斷出棧,

//每齣棧乙個元素,將其右孩子壓入棧,左孩子壓入棧

void nonrecursionpreorder(treenode*r)

cout << endl;

}//--遞迴中序遍歷

void inorder(treenode*root)

}//用乙個指標標記當前訪問的節點(初始為根節點),如果棧為空且當前指標為空說明遍歷結束;

//在遍歷過程中將當前節點開始一直向左都押入棧中,

//然後取出棧頂元素,並將當前指標設為右孩子

void nonrecursioninorder(treenode*r)

treenode*temp = s.top();

cout << temp->data << " ";

s.pop();

p = temp->right;

}cout << endl;

}//遞迴後序遍歷

void postorder(treenode*root)

}void nonrecursionpostorder(treenode*r)

treenode* temp = s.top();

if (temp->right == null || lastedvisted == temp->right)//說明訪問到了根節點

else

}cout << endl;

}

二叉樹及其各種遍歷

樹形結構是一類重要的非線性資料結構,其中以樹和二叉樹最為常用。二叉樹是每個結點最多有兩個子樹的有序樹。通常子樹的根被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用作二叉查詢樹和二叉堆或是二叉排序樹。二叉樹的每個結點至多只有二棵子樹 不存在度大於2的結點 ...

二叉樹 各種遍歷演算法

include include include using namespace std 二叉樹結點 typedef struct bitnodebitnode,bitree 按先序序列建立二叉樹 int createbitree bitree t else return 0 輸出 void visi...

二叉樹的各種遍歷演算法

typedef struct treenode int data struct treenode left struct treenode right int flag 該標記用於後序非遞迴遍歷 ptree 先序遞迴遍歷 void bt preorder ptree root if root nul...