(c++)二叉树的广度优先遍历和深度优先遍历
2018-04-03 20:36
330 查看
(c++)二叉树的广度优先遍历和深度优先遍历
一.深度优先遍历,此处以先序遍历(根左右)为例
private Node * root; //递归 public void travelRecursively( )const{ travel_recursively( root ); cout<<endl; } private void travel_recursively( const Node* &root) const { if(root == null)//递归结束 return ; cout << root-> data << " "; travel_recursively( root -> left ); travel_recursively( root -> right ); } //迭代 public void travel_Iteratively( ){ Node local_root = root; Stack<Node*> local_nodes = new Stack<Node*> ( ); local_nodes.push ( local_root ); while( true ){ if( local_nodes.empty( ) ) break; local_root = local_nodes.top( ); if( local_root != null ){ cout << local_root-> data << " " ; local_nodes.push ( local_root-> right ); local_nodes.push ( local_root-> left ); } local_nodes.pop ( ); } cout << endl; }
二.广度优先遍历,以先序遍历(根左右)为例
private Node* root; //迭代 public void travelIteratively(){ Node * local_root=root; Queque< Node* > local_nodes = new Queque< Node* > ( ); local_nodes.push(local_root); while(true){ if(local_nodes.empty()) break; local_root=local_nodes.top(); if(local_root!=null){ cout<<local_root->data<<" "; local_nodes.push(local_root->left); local_nodes.push(local_root->right); } local_nodes.pop(); } cout<<endl; } //与迭代相比,递归在广度优先遍历上显得很拙劣
相关文章推荐
- 图的深度优先和广度优先遍历(图以邻接表表示,由C++面向对象实现)
- C/C++代码实现图(有向图)的深度,广度优先遍历
- 二叉树的深度优先和广度优先遍历
- 二叉树的递归,非递归遍历,深度优先遍历,广度优先遍历
- 二叉树深度优先遍历、广度优先遍历、非递归遍历算法
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 二叉树的深度优先和广度优先遍历
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 二叉树的深度优先和广度优先遍历
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 图的创建以及深度与广度优先遍历C/C++
- 二叉树的深度优先和广度优先遍历
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 数据结构-二叉树的深度优先和广度优先遍历
- 二叉树的深度优先和广度优先遍历
- 二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式 二叉树的遍历方式: 1、深度优先:递归,非递归实现方式 1)先序遍历:先访问根节点,再依次访问左子树和右子树 2)中序遍
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- 二叉树的深度和广度优先遍历 - Java实现-2
- C++实现图的邻接矩阵存储和广度、深度优先遍历实例分析
- 二叉树的深度优先遍历、广度优先遍历和非递归遍历、图的深度优先和广度优先遍历