二叉树的遍历

xiaoxiao2021-02-28  56

二叉树的遍历

二叉树的遍历是指通过一定顺序访问二叉树的所有结点。遍历方法一般有四种:先序遍历、中序遍历、后序遍历、层序遍历,其中,前三种一般使用深度优先所搜(DFS)实现,而层序遍历一般使用广度优先搜索 (BFS)实现。 1、先序遍历的实现: void preOrder(node* root){ if(root == NULL){ //递归边界 return; } printf("%d\n", root->data); //访问根结点,例如将其数据域输出 preOrder(root->lchild); //访问左子树 preOrder(root->rchild); //访问右子树 } 2、中序遍历的实现: void inOrder(node* root){ if(root == NULL){ //递归边界 return; } inOrder(root->lchild); //访问左子树 printf("%d\n", root->data); //访问根结点,例如将其数据域输出 inOrder(root->rchild); //访问右子树 } 3、后序遍历的实现: void postOrder(node* root){ if(root == NULL){ //递归边界 return; } postOrder(root->lchild); //访问左子树 postOrder(root->rchild); //访问右子树 printf("%d\n", root->data); //访问根结点,例如将其数据域输出 } 4、层序遍历的实现: void layerOrder(node* root){ queue<node*> q; //注意队列中存的是地址 q.push(root); //将根结点地址入队 while(!q.empty()){ node* now = q.front(); //取出队首元素 q.pop(); printf("%d", now->data); //访问队首元素 if(now->lchild != NULL){ //左子树非空 q.push(now->lchild); } if(now->rchild != NULL){ //右子树非空 q.push(now->rchild); } } }
转载请注明原文地址: https://www.6miu.com/read-80596.html

最新回复(0)