//-----二叉樹
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...