二叉树遍历

关于二叉树遍历

最为清晰的就是层序遍历 也就是按照层次来一个个遍历

那么下图的遍历顺序就是 1-2-3-4-5-6-7-8-9-10-11-12-13-14-15

(一般来讲使用的是递归遍历)

这样根据遍历的先后顺序分为先序遍历 、中序遍历 、 后序遍历

1.先序遍历 (按照 根节点、左子节点、右子节点的顺序进行遍历 )

按照实现的代码来讲

cout<<根节点<<endl;

递归左子节点

递归右子节点
首先输出的是主根节点,然后就是左子根节点 总是在遍历完所有的左子根节点之后才开始遍历右子根节点,就是相当于栈 根只是当前的节点输出
递归左子节点1
此时已经进入左子节点1上继续递归左子节点2 递归右边是等到你当前的左递归完成 因为此时你的程序递归右子节点的代码在递归左子节点的代码之前,左边一进入就是再调用左边的左边,如此首先肯定是输出所有的左子节点 就相当于是 首先递归到最内层然后一层一层往外释放
所以按照先序遍历的顺序就是1-2-4-9-8-5-10-11-3-6-12-13-7-14-15

由此观之 中序遍历的顺序就是(左 根 右) 递归完成左边的再输出根节点

首先递归到最左边的子树区域 然后按照左边的次序优先的顺序到达叶子结点 然后输出根节点
中序遍历的输出顺序为:9-4-8-2-10-5-11-1-12-6-13-3-14-7-15

后序遍历的方式就是按照(左子节点 右子节点 根节点)的顺序

所以就是要遍历完 所有的节点之后反过来从首先遍历完所有的子节点开始输出 输出的顺序还是按照先到的先输出 由于是左子节点开始遍历 所以左边优先 此时就是看到达的顺序来输出
后序遍历的顺序为 9-8-4-10-11-5-2-12-13-6-14-15-7-3-1
齐芒行,川锋明!
原文地址:https://www.cnblogs.com/qimang-311/p/14107615.html