21xrx.com
2024-11-05 16:35:58 Tuesday
登录
文章检索 我的文章 写文章
C++实现二叉树的先序、中序和后序遍历
2023-07-08 10:27:18 深夜i     --     --
C++ 二叉树 先序遍历 中序遍历 后序遍历

二叉树是一种常见的数据结构,它由节点和边组成,每个节点最多有两个子节点。在C++中,我们可以使用指针来表示二叉树。实现二叉树的先序、中序和后序遍历,是C++程序员需要熟练掌握的基本技能之一。

二叉树的先序遍历,是指先访问根节点,然后遍历它的左子树和右子树。实现这种遍历方式,可以使用递归或者栈的方式。下面是使用递归的代码:


void preorderTraversal(TreeNode* root) {

  if (root == nullptr) return;

  cout << root->val << " ";

  preorderTraversal(root->left);

  preorderTraversal(root->right);

}

中序遍历,是指先遍历左子树,然后访问根节点,最后遍历右子树。同样,使用递归或者栈的方式都可以实现中序遍历。下面是使用递归的代码:


void inorderTraversal(TreeNode* root) {

  if (root == nullptr) return;

  inorderTraversal(root->left);

  cout << root->val << " ";

  inorderTraversal(root->right);

}

后序遍历,是指先遍历左子树,然后遍历右子树,最后访问根节点。同样,使用递归或者栈的方式都可以实现后序遍历。下面是使用递归的代码:


void postorderTraversal(TreeNode* root) {

  if (root == nullptr) return;

  postorderTraversal(root->left);

  postorderTraversal(root->right);

  cout << root->val << " ";

}

需要注意的是,在递归遍历时,必须判断传入的节点是否为空,否则会造成程序崩溃。

总体来说,实现二叉树的先序、中序和后序遍历,需要熟悉二叉树的基本知识,以及熟练掌握递归和栈的使用方法。通过不断练习和实践,才能加深理解,掌握这种遍历方式的实现。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复