Ejemplo n.º 1
0
void levelOrderTraversal(TreeNode *root, int level, std::vector<int> &vals)  
{  
    if(root == NULL) return;  
    if(level == 1)  
    {  
        vals.push_back(root->val);  
        return;  
    }  
    levelOrderTraversal(root->left, level-1, vals);  
    levelOrderTraversal(root->right, level-1, vals);  
} 
void levelOrderTraversal(BinaryTree *root, queue<int> &traversal, int level)
{
	if (root == NULL)
	{
		return;
	}
	if (level == 1)
	{
		traversal.push(root->key);
	}
	else
	{
		levelOrderTraversal(root->left, traversal, level - 1);
		levelOrderTraversal(root->right, traversal, level - 1);
	}
}
Ejemplo n.º 3
0
/// 层次遍历递归实现
std::vector<int> levelOrderTraversal(TreeNode *root)   
{  
    std::vector<int> vals;  
    int height = getTreeHeight(root);  
    for(int level = 1; level <= height; level++)  
        levelOrderTraversal(root, level, vals);  
    return vals;  
}  
queue<int> levelOrderTraversalWrapper(BinaryTree *root, int maxElements)
{
	queue<int> traversal;
	int level = 1;
	while (traversal.size() < maxElements)
	{
		levelOrderTraversal(root, traversal, level);
		level++;
	}
	return traversal;
}
int main()
{
    Node<int> *root;
    insert( root, 11 );
    insert( root, 9 );
    insert( root, 20 );
    insert( root, 15 );
    insert( root, 25 );
    std::cout << "Inorder:";
    inorder(root);
    std::cout << std::endl;

    std::cout << "Level order: \n";
    levelOrderTraversal( root );
    return 0;
}