您的位置:首页 > 编程语言 > C语言/C++

C++ 二叉树深度优先遍历和广度优先遍历

2016-09-17 00:56 447 查看
二叉树的创建代码==>C++ 创建和遍历二叉树

深度优先遍历:是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。

//深度优先遍历二叉树
void depthFirstSearch(Tree root){
stack<Node *> nodeStack;  //使用C++的STL标准模板库
nodeStack.push(root);
Node *node;
while(!nodeStack.empty()){
node = nodeStack.top();
printf(format, node->data);  //遍历根结点
nodeStack.pop();
if(node->rchild){
nodeStack.push(node->rchild);  //先将右子树压栈
}
if(node->lchild){
nodeStack.push(node->lchild);  //再将左子树压栈
}
}
}


广度优先遍历:是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。

//广度优先遍历
void breadthFirstSearch(Tree root){
queue<Node *> nodeQueue;  //使用C++的STL标准模板库
nodeQueue.push(root);
Node *node;
while(!nodeQueue.empty()){
node = nodeQueue.front();
nodeQueue.pop();
printf(format, node->data);
if(node->lchild){
nodeQueue.push(node->lchild);  //先将左子树入队
}
if(node->rchild){
nodeQueue.push(node->rchild);  //再将右子树入队
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: