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

二叉树的遍历

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

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

猜你喜欢

转载自www.cnblogs.com/break-dawnn/p/10121657.html
今日推荐