如何备份网站数据,海南免税店网上商城,低调与华丽wordpress版,福建企业网站开发对于前序遍历#xff0c;首先访问当前节点#xff0c;然后递归地遍历左子树和右子树。
这就是为什么前序遍历的代码中#xff0c;首先是 printf(%d , root-data);。中序遍历#xff1a;
对于中序遍历#xff0c;首先递归地遍历左子树#xff0c;然后访问… 对于前序遍历首先访问当前节点然后递归地遍历左子树和右子树。
这就是为什么前序遍历的代码中首先是 printf(%d , root-data);。中序遍历
对于中序遍历首先递归地遍历左子树然后访问当前节点最后递归地遍历右子树。
这就是为什么中序遍历的代码中左子树递归调用在当前节点访问之前右子树递归调用在当前节点访问之后。后序遍历
对于后序遍历首先递归地遍历左子树和右子树最后访问当前节点。
这就是为什么后序遍历的代码中左子树递归调用在当前节点访问之前右子树递归调用在当前节点访问之前。 void preOrderTraversal(struct TreeNode* root) {if (root ! NULL) {printf(%d , root-data); // 访问当前节点preOrderTraversal(root-left); // 递归遍历左子树preOrderTraversal(root-right); // 递归遍历右子树}
} // 中序遍历
void inOrderTraversal(struct TreeNode* root) {if (root ! NULL) {inOrderTraversal(root-left); // 递归遍历左子树printf(%d , root-data); // 访问当前节点inOrderTraversal(root-right); // 递归遍历右子树}
} void postOrderTraversal(struct TreeNode* root) {if (root ! NULL) {postOrderTraversal(root-left); // 递归遍历左子树postOrderTraversal(root-right); // 递归遍历右子树printf(%d , root-data); // 访问当前节点}
} 二叉树的创建
// 定义二叉树结构
struct TreeNode {int data;struct TreeNode* left;struct TreeNode* right;
};// 创建新的二叉树节点
struct TreeNode* createNode(int value) {struct TreeNode* newNode (struct TreeNode*)malloc(sizeof(struct TreeNode));newNode-data value;newNode-left NULL;newNode-right NULL;return newNode;
} 测试代码
int main() {// 构建一个简单的二叉树struct TreeNode* root createNode(1);root-left createNode(2);root-right createNode(3);root-left-left createNode(4);root-left-right createNode(5);// 前序遍历printf(前序遍历: );preOrderTraversal(root);printf(\n);// 中序遍历printf(中序遍历: );inOrderTraversal(root);printf(\n);// 后序遍历printf(后序遍历: );postOrderTraversal(root);printf(\n);return 0;
}