数据结构与算法之树

∥☆過路亽.° 提交于 2019-11-29 03:19:20

树除了根节点之外每个结点只有一个父节点,根节点没有父节点,除了叶结点之外所有结点都有一个或多个子节点,叶节点没有子节点,父节点和子结点之间用指针连接。

一般大部分都是二叉树,即每个结点最多只能有两个子结点。遍历方式有三种:前序(根-左-右)、中序(左-根-右)、后序9左-右-根);

struct BinaryTreeNode
{
    int m_nValue;
    BinaryTreeNode *m_pLeft;
    BinaryTreeNode *m_pRight;
};

1 重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历都不含有重复的数字。

  • BinaryTreeNode *Construct(int *preorder, int *inorder, int length);

解题思路:

(1)根据preorder的第一个数字,遍历inorder找到该数字,即确定了根结点的位置;

(2)inorder中根结点左边为左子树,右边为右子树,再结合preorder就找到左子树和右子树对应的前序序列和中序序列;

(3)用同样的方法分别去构建左子树和右子树,即用递归完成;

2 未完待续~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!