首页 > 其他分享 >二叉树的先序、中序、后序的遍历

二叉树的先序、中序、后序的遍历

时间:2023-05-05 18:32:52浏览次数:35  
标签:PreOrder 遍历 后序 中序 二叉树 先序


二叉树遍历的思想:

1.先序遍历
  先序遍历二叉树的过程是:
  (1)访问根节点;
  (2)先序遍历左子树;
  (3)先序遍历右子树。 

2.中序遍历
  中序遍历二叉树的过程是:
  (1)中序遍历左子树;
  (2)访问根节点;
  (3)中序遍历右子树。 

3.后序遍历
  后序遍历二叉树的过程是:
  (1)先序遍历左子树;
  (2)先序遍历右子树;
  (3)访问根节点。

二叉树遍历递归算法
  由二叉树的先序、中序和后序三种遍历过程得到如下三种递归算法如下:
  

void PreOrder(BTNode *b)
   {
     if(b!=NULL)
     {
       printf("%c",b->data);
       PreOrder(b->lchild);
       PreOrder(b->rchild);           
     }     
   } 
   
   void InOrder(BTNode *b)
   {
     if(b!=NULL)
     {
       PreOrder(b->lchild);
       printf("%c",b->data);
       PreOrder(b->rchild);           
     }     
   } 
   
   void PostOrder(BTNode *b)
   {
     if(b!=NULL)
     {
       PreOrder(b->lchild);
       PreOrder(b->rchild);
       printf("%c",b->data);           
     }     
   }

标签:PreOrder,遍历,后序,中序,二叉树,先序
From: https://blog.51cto.com/u_16099425/6247411

相关文章

  • 二叉树的建立
    二叉树的创建typedefstructnode{ElemTypedata;structnode*lchild;//指向左孩子的节点structnode*rchild;//指向右孩子的节点}BTNode;#include"btree.h"voidCreateBTNode(BTNode*&b,char*str){BTNode*St[MaxSize],*p;inttop=-1,k,j=0;......
  • 第五章 树与二叉树
    树的概念根节点,分支节点,叶子节点树是递归定义的数据结构两个节点之间的路径,只能从上往下.(有向边)结点的度:有几个孩子(分支)树的度:各结点的度的最大值有序树和无序树树和森林树的度和M叉树二叉树的定义和基本概念二叉树的五种状态特殊状态的二叉......
  • 2023-05-03:给你一棵 二叉树 的根节点 root ,树中有 n 个节点 每个节点都可以被分配一个
    2023-05-03:给你一棵二叉树的根节点root,树中有n个节点每个节点都可以被分配一个从1到n且互不相同的值另给你一个长度为m的数组queries你必须在树上执行m个独立的查询,其中第i个查询你需要执行以下操作:从树中移除以queries[i]的值作为根节点的子树题目所用测试......
  • 2023-05-03:给你一棵 二叉树 的根节点 root ,树中有 n 个节点 每个节点都可以被分配一个
    2023-05-03:给你一棵二叉树的根节点root,树中有n个节点每个节点都可以被分配一个从1到n且互不相同的值另给你一个长度为m的数组queries你必须在树上执行m个独立的查询,其中第i个查询你需要执行以下操作:从树中移除以queries[i]的值作为根节点的子树题目所......
  • 1159 Structure of a Binary Tree + 根据前序和中序构建二叉树+ 层序遍历模板复习
    题目链接:https://pintia.cn/problem-sets/994805342720868352/exam/problems/1478635126488367104唉,今天的bug出在了下面这条语句。if(tree[root_key].left*tree[root_key].right<0)full_tree=false;我写成了full_tree=!(tree[root_key].left*tree[root_key].rig......
  • 先序排列
    #[NOIP2001普及组]求先序排列##题目描述给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数$\le8$)。##输入格式共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。##输出格式共一行一个字符串,表......
  • 【字节二面算法】NO662 二叉树最大宽度
    [字节二面算法]662.二叉树最大宽度给你一棵二叉树的根节点root,返回树的最大宽度。树的最大宽度是所有层中最大的宽度。每一层的宽度被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。将这个二叉树视作与满二叉树结构相同,两端点间会出现一些延伸到这一层的n......
  • Java层序遍历打印二叉树(有Null值)
    publicclassSolution{publicstaticvoidmain(String[]args){Integer[]arr={3,9,20,null,null,15};//根据数组构造出二叉树TreeNodetreeNode=creatTreeNode(arr,0);//层序有Null值的打印二叉树printBin......
  • 线索化二叉树的递归算法
    //线索化二叉树的递归算法#include<stdio.h>#include<malloc.h>typedefstructBiTNode{intdata;structBiTNode*lchild,*rchild;//存储二叉树的左孩子和右孩子}BiTNode,*BiTree;typedefstructThreadNode{intdata;structThreadNode*......
  • Java根据Integer数组(有null值)递归构造二叉树
    二叉树:publicclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(){}TreeNode(intval){this.val=val;}TreeNode(intval,TreeNodeleft,TreeNoderight){this.val=val;this.l......