美文网首页
二叉树的遍历

二叉树的遍历

作者: ustclcl | 来源:发表于2019-05-09 22:07 被阅读0次

今天面试被问到不用递归遍历二叉树,当时只想着以前没用过,直接回答了不知道。回来路上想了一下,递归和栈是一样的,直接改成栈就好了啊,嗯,大概最后结束的判断条件要考虑一下,实在不行试试图的遍历。唉,不镇定啊,着急了。

void print_recursion(BinaryTreeNode * n){
  if(n == NULL){
    cout << "null" << endl;
  }
  else{
    cout << n->data;
    print_recursion(n->LeftChild);
    print_recursion(n->RightChild);
  }
}

void print_Norecursion(BinaryTreeNode *n){
  stack<BinaryTreeNode *> NodeStack;
  while(n!=NULL || !NodeStack.empty()){
    while(n){
      cout << n->data <<" ";
      NodeStack.push(n);
      n = n->LeftChild;
    }
    if(!NodeStack.empty()){
      n = NodeStack.top();
      NodeStack.pop();
      n = n->RightChild;
    }
  }
}

int main(int argc, char *argv[]){
  BinaryTreeNode* root;
  root = CreateTree();
  print_recursion(root);
  print_Norecursion(root);
}

./bitree
1
add 1
2
add 2
0
0
3
add 3
4
add 4
0
0
5
add 5
0
0
1 2 Null
Null
3 4 Null
Null
5 Null
Null
1 2 3 4 5

相关文章

  • 二叉树 基础操作

    二叉树的使用 二叉树结构 先序创建二叉树 DFS 先序遍历二叉树 中序遍历二叉树 后序遍历二叉树 BFS 层次遍历...

  • 二叉树遍历

    二叉树 二叉树的存储结构 前序遍历 中序遍历 后序遍历 遍历代码 反转二叉树 深入学习二叉树 二叉树-你必须要懂!...

  • 二叉树操作

    树节点 逐行顺序解析二叉树 前序遍历二叉树 中序遍历二叉树 后序遍历二叉树 删除指定数值的节点 前序遍历顺序存储的...

  • 关于二叉树的算法题

    前序遍历中序遍历后序遍历判断是否是平衡二叉树判断是否是对称二叉树判断二叉树高度按照层遍历二叉树判断二叉树宽度

  • 二叉树三种遍历Swift代码实现

    二叉树的三种遍历 二叉树 前序遍历 中序遍历 后序遍历 另外 不得不说,得到二叉树的前序遍历和中序遍历的结果或者后...

  • 数据结构与算法之二叉树遍历(七)

    目录 前序遍历中序遍历后序遍历层序遍历遍历方式的选择条件根据遍历结果重构二叉树翻转二叉树计算二叉树的高度判断一棵树...

  • 二叉树的遍历

    二叉树的遍历 二叉树遍历 分为前序遍历、中序遍历和后序遍历。 前序遍历 (DLR) 先访问根节点,然后前序遍历左子...

  • 数据结构:树的实现和遍历(c++)

    (一)二叉树的遍历——递归实现 二叉树常见的遍历方式分为前序遍历、中序遍历和后序遍历。 1 前序遍历 前序遍历也叫...

  • 二叉树的蛇形层次遍历(LeetCode.103)

    题目 解析 首先参考二叉树的层次遍历层次遍历二叉树(LeetCode--102二叉树的层次遍历)[https://...

  • 算法精选题总结之二叉树类

    1.二叉树的中序遍历中序遍历的迭代方法中序遍历的递归方法2.二叉树前序遍历3.二叉树后续遍历4.二叉树的最近公共祖...

网友评论

      本文标题:二叉树的遍历

      本文链接:https://www.haomeiwen.com/subject/nncnoqtx.html