leetcode二叉树的四种遍历(迭代)及构造(C语言)

文章目录

  • 前言
  • 一、二叉树中序遍历非递归方法
    • 1.1设计思路
    • 1.2代码
  • 二、前序遍历方法
    • 2.1设计思路
    • 2.2代码
  • 三、后序遍历
    • 3.1设计思路
    • 3.2代码
  • 四、层次遍历
    • 4.1设计思路
    • 4.2代码
  • 五、二叉树的构造(递归方法)
    • 5.1设计思路
    • 5.2代码


前言

遍历二叉树(非递归)需要每个结点输出一次,而每个元素只进栈或出栈一次,因此写代码的时候可以将输出与进栈或出栈一起考虑。
实现算法时只考虑树的结点如何按顺序进栈出栈。


一、二叉树中序遍历非递归方法

1.1设计思路

  1. 依次将p左子树入栈,直至p为空指针(初始p指向根节点)
  2. 将结点出栈,输出其值,另p指向其右结点,继续重复1

1.2代码

//代码前半部分为参数声明,while为中序遍历实现
int* inorderTraversal(struct TreeNode* root, int* returnSize){
    *returnSize=0;
    if(root==NULL)
        return NULL;
    int* ans=(int*)malloc

你可能感兴趣的:(c语言,数据结构)