iis网站目录权限,聚美优品网站建设导向,前端学什么,广告公司名字怎么取好我们来了解一下二叉树的遍历#xff0c;话不多说
二叉树的遍历的概念#xff1a;
二叉树有四种遍历方式#xff0c;分别为前序遍历#xff0c;中序遍历#xff0c;后序遍历和层序遍历#xff0c;但我们今天谈谈前三种#xff0c;并实现它
前序遍历#xff1a; 按照根…我们来了解一下二叉树的遍历话不多说
二叉树的遍历的概念
二叉树有四种遍历方式分别为前序遍历中序遍历后序遍历和层序遍历但我们今天谈谈前三种并实现它
前序遍历 按照根左子树右子树的顺序进行遍历方便记忆根左右
中序遍历 按照左子树根右子树的顺序进行遍历方便记忆左根右
后序遍历 按照左子树右子树根的顺序进行遍历方便记忆左右根
注意对于左右子树是相对于每个根结点来说的遍历时必须直到最后为空时再往上返回
看了概念依然会有很多人不解(包括我)所以我们接下来来用中序遍历的例子帮助我们更好地理解 根据中序遍历的左根右的顺序和上图的方向我们可以写出中序遍历的顺序结构形式了 递归代码实现
创建二叉树
我们定义数据域和指针域指针域为树的左右结点
typedef int BTDataType;
typedef struct BinaryTreeNode
{BTDataType data;//数据域struct BinaryTreeNode* left;struct BinaryTreeNode* right;
}BTNode;
前中后序遍历
我们通过中序遍历发现当它往下调用完之后会往上返回这符合递归的调用的方式
//前序遍历--根左右
void PreOrder(BTNode* root)
{if (root NULL)//递归函数的出口{printf(NULL );return;}printf(%d , root-data);PreOrder(root-left);PreOrder(root-right);
}
//中序遍历--左根右
void MidOrder(BTNode* root)
{if (root NULL)//递归函数的出口{printf(NULL );return;}MidOrder(root-left);printf(%d , root-data);MidOrder(root-right);
}
//后序遍历--左右根
void AftOrder(BTNode* root)
{if (root NULL)//递归函数的出口{printf(NULL );return;}AftOrder(root-left);AftOrder(root-right);printf(%d , root-data);
}