Algorithm c++ binary tree breadth traversal and depth traversal

Algorithm c++ binary tree breadth traversal and depth traversal

1. Deep traversal
struct Tree{
    
    
	int data;
	struct Tree *lchild,rchild;
}BiTree;
  • First-order traversal (middle left and right)
void PreOrderTraverse(BiTree *T)  
{
    
      
    if(T){
    
      
        printf("%c ",T->data);  
        PreOrderTraverse(T->lchild);  
        PreOrderTraverse(T->rchild);  
    }  
}  
  • In-order traversal (left middle right)
void InOrderTraverse(BiTree *T)  
{
    
      
    if(T){
    
      
        InOrderTraverse(T->lchild);  
        printf("%c ",T->data);  
        InOrderTraverse(T->rchild);  
    }  
}  
  • Post-order traversal (left and right middle)
void PostOrderTraverse(BiTree *T)  
{
    
      
    if(T){
    
      
        PostOrderTraverse(T->lchild);  
        PostOrderTraverse(T->rchild);  
        printf("%c ",T->data);  
    }  
}
2. Breadth traversal
void LevelOrder(BiTree *root) {
    
    
	if(root == NULL) return;
	queue<binode*> Q;
	Q.push(root);
	//while there is at least one discovered node
	while(!Q.empty()) {
    
    
		BiTree * current = Q.front();
		Q.pop(); // removing the element at front
		cout<<current->data<<" ";
		if(current->lchild != NULL) Q.push(current->lchild);
		if(current->rchild != NULL) Q.push(current->rchild);
	}
}

Guess you like

Origin blog.csdn.net/qq_45125250/article/details/109771359