2叉树的非递归实现

来源:互联网 发布:ubuntu 16.04设置中文 编辑:程序博客网 时间:2024/04/28 04:15

装载于:http://blog.csdn.net/qq_20581563/article/details/51095639

    //深度优先算法:     void depthFirstSearch(Tree* root){          stack<Tree *> nodeStack;  //使用C++的STL标准模板库          nodeStack.push(root);          Tree *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<Tree *> nodeQueue;  //使用C++的STL标准模板库          nodeQueue.push(root);          Tree *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);  //再将右子树入队              }          }      }   
0 0
原创粉丝点击