[Data Structure & Algorithm] 二叉树的遍历 - 前序遍历、中序遍历、后序遍历以及转换

二叉树的遍历

例如,将中缀表达式(a+b)/c-d+e*f表示为二叉树
blog

  • 前序遍历 - 前缀表达式(波兰式)
    • 根节点->左子树->右子树
    • 示例二叉树的前序遍历 +-/+abcd*ef
    • 特色:第一位必定是根节点
  • 中序遍历 - 中缀表达式
    • 左子树->根节点->右子树
    • 找到根节点后,在其左侧的都是左子树下的结点,在其右侧的都是右子树下的结点
  • 后序遍历 - 后缀表达式(逆波兰式)
    • 左子树->右子树->根节点
    • 示例二叉树的后序遍历:ab+c/d-ef*+
    • 特色:最后一位必定是根节点
  • 已知两种遍历,求第三种遍历
    • 若是要肯定二叉树,已知必须包括中序遍历
    • 已知前序遍历和后续遍历 - 只能肯定祖先关系
      1. 前序的第一位和后续的最后一位确定是根节点
      2. 前序的第二位若是和后续的最后第二位同样,那这个结点就是根节点下的左子树;反之,则为右子树
        · 若是前序的第二位是左子树,则说明该树的根节点下没有右子树
    • 已知前序遍历和中序遍历
      • 前序遍历至关于入栈顺序,中序遍历至关于出栈顺序
      • 若是二叉树没有左子树,则其前序遍历和中序遍历的顺序相同
相关文章
相关标签/搜索