二叉树前、中、后序遍历及还原二叉树

二叉树:
二叉树前、中、后序遍历及还原二叉树_第1张图片

  • 前序遍历
    根节点 —>左子树—>右子树
    顺序:根节点 —>前序遍历左子树(根->左->右)—>前序遍历右子树(根->左->右)

遍历结果:A-B-C-D-E-F-G-H-I

  • 中序遍历
    左子树—>根节点—>右子树
    顺序:中序遍历左子树(左->根->右)—>根节点—>中序遍历右子树(左->根->右)

遍历结果:D-C-B-E-F-A-H-G-I

  • 后序遍历
    左子树—>右子树—>根节点
    顺序:后序遍历左子树(左->右->根)—>后序遍历右子树(左->右->根)—>根节点

遍历结果:D-C-F-E-B-H-I-G-A


总结
先序、中序、后序中的这个”顺序“是对于根节点而言的,例如中序就是中间访问根节点,后序就是最后访问根节点。

只有前序和后序遍历无法还原二叉树:前序和后序都能确定根节点,但是无法确认左子树和右子树。
前序+中序 or 后序+中序 可以还原二叉树:中序遍历是用来区分左右子树的。根据前序或后序得到的根节点,在中序遍历中,根节点左侧的是左子树,右侧的是右子树。由此,即可还原二叉树。

你可能感兴趣的:(保研,c++,c语言,数据结构,二叉树)