前序遍历
代码:
//二叉树的前序遍历
void preOrder() {
preOrder(root);
}
//对以node为根的二叉搜索树进行前序遍历
void preOrder(Node* node) {
if (node != NULL) {
cout << node->key << endl;
preOrder(node->left);
preOrder(node->right);
}
}
中序遍历结果会从小到大排序,因此对于排序问题可以考虑此类方法。
//二叉树的中序遍历
void inOrder() {
inOrder(root);
}
//对以node为根的二叉搜索树进行中序遍历
void inOrder(Node* node) {
if (node != NULL) {
inOrder(node->left);
cout << node->key << endl;
inOrder(node->right);
}
}
后序遍历适合释放二叉树的问题。
//二叉树的后序遍历
void postOrder() {
postOrder(root);
}
void postOrder(Node* node) {
if (node != NULL) {
postOrder(node->left);
postOrder(node->right);
cout << node->key << endl;
}
}
层序遍历
也叫广度优先遍历