二叉树的前中后序遍历,前序遍历,根左右;中序遍历,左根右;后续遍历,左右根。非递归
二叉树的前序遍历
方法1,这个完全是我自己想的。在做完用队列实现二叉树的层次遍历后,按照这个思路,写了这个算法。
1,判断是否空树,如果是,则返回空;如果不是,则根入栈
2,栈不是空的,进入循环。新建一个树结点,把根赋给它,根出栈,对根处理;然后判断根是否有右子树,如果有则进栈;同理,判断是否有左子树,如果有则进栈。第一遍循环结束,然后再循环,直到遍历完。
vector<int> preorderTraversal(TreeNode *root) {
vector<int>vec;
if( ! root)
return vec;
stack<TreeNode *>stack;
stack.push(root);