第一次动手写二叉树的,有点小激动,64行的if花了点时间,上传leetcode一次点亮~~~

  1 /* inorder traversal binary tree */
  2 #include <stdio.h>
  3 #include <stdlib.h>
  4
  5
  6 struct TreeNode {
  7     int val;
  8     struct TreeNode *left;
  9     struct TreeNode *right;
 10 };
 11
 12 int* inorderTraversal(struct TreeNode* root, int* returnSize);
 13
 14 int main() {
 15
 16     struct TreeNode n1, n2, n3;
 17     n1.val = 1;
 18     n1.left = NULL;
 19     n1.right = &n2;
 20     /*  */
 21     n2.val = 2;
 22     n2.left = &n3;
 23     n2.right = NULL;
 24     /*  */
 25     n3.val = 3;
 26     n3.left = NULL;
 27     n3.right = NULL;
 28     int returnSize = 0;
 29     int *a = inorderTraversal(&n1, &returnSize);
 30
 31     int i=0;
 32     for(i=0; i<returnSize; i++)
 33         printf("%d ", a[i]);
 34
 35     printf("\n");
 36
 37 }
 38
 39
 40 /**
 41  * Definition for a binary tree node.
 42  * struct TreeNode {
 43  *     int val;
 44  *     struct TreeNode *left;
 45  *     struct TreeNode *right;
 46  * };
 47  */
 48 /**
 49  * Return an array of size *returnSize.
 50  * Note: The returned array must be malloced, assume caller calls free().
 51  */
 52 int* inorderTraversal(struct TreeNode* root, int* returnSize) {
 53
 54     struct TreeNode  **stack = (struct TreeNode **) malloc (sizeof(struct TreeNode *) * 1000); /* store node not access at present */
 55     int *result = (int *) malloc(sizeof(int) * 1000);
 56     int count = 0;
 57     stack[0] = root;           /* first node */
 58     struct TreeNode* curr;
 59     int top = 0;                /* element number in stack */
 60
 61     while(top != -1 ) {
 62         curr = stack[top];    /* get stack top element */
 63
 64         if(curr == NULL) {     /* if current element is null */
 65             while(top != -1 && curr == NULL)
 66                 curr = stack[--top];
 67             if(top == -1 || curr == NULL)
 68                 break;
 69             else {
 70                 result[count++] = curr->val;
 71                 stack[top] = curr->right;
 72                 continue;
 73             }
 74         }
 75         if(curr->left != NULL)
 76             stack[++top] = curr->left;
 77
 78         if(curr->left == NULL) {  /* if left subtree is NULL, then we need to access middle node */
 79             result[count++] = curr->val;
 80             stack[top] = curr->right;
 81         }
 82     }
 83     *returnSize = count;
 84     return result;
 85 }

LeetCode:二叉树的非递归中序遍历相关推荐

  1. 非递归前序遍历二叉树,非递归中序遍历二叉树,非递归后续遍历二叉树

    import java.util.Stack;public class Front {//非递归前序遍历public void front(TreeNode node) {Stack<TreeN ...

  2. 数据结构之---非递归中序遍历二叉树

    二叉树中序非递归遍历算法实现 大家好,我是逝去的粒子,从今天起,我将尝试着数据结构从0开始学习分享,此篇文章作为试验,一方面可以为自己做笔记防止遗忘,另一方面希望可以帮助大家.不废话,正式开始. 1. ...

  3. 非递归中序遍历二叉树总结(2种方法)

    算法 非递归中序遍历二叉树总结(2种方法) @author:Jingdai @date:2020.12.03 传送门 非递归先序遍历二叉树 非递归后序遍历二叉树 方法1 先序遍历是第一次遇到该节点遍历 ...

  4. 非递归中序遍历二叉树

    中序遍历二叉树(递归) void inOrder(BT* root) {if (root == NULL)return;inOrder(root->lchild);cout << & ...

  5. 不用栈实现二叉树非递归中序遍历

    偶尔看到这样一个问题: 有个二叉树,每个节点除了左右指针外,还有一个指向父节点的指针. 要求不用递归,中序遍历这棵树.另要求空间复杂度是O(1). 空间复杂度为O(1),摆明就是不让用堆栈模拟递归,所 ...

  6. 二叉树非递归中序遍历

    二叉树的中序遍历 为什么把中序遍历放在最前面呢,因为在非递归遍历中,这个是最简单也是最容易理解的,所以放在第一个的位置. 中序遍历的递归算法很简单,但是想要非递归的实现,就要用到栈这个数据结构, 那么 ...

  7. 无栈非递归中序遍历非线索化二叉树

    试设计一个非递归算法,按中根顺序遍历非线索二叉树,但不得用任何辅助. 在执行算法期间,允许改变LLINK和RLINK的值. 如何不用辅助栈非递归遍历二叉树呢? 这里给出了一个比较方便的算法,其基本思路 ...

  8. 二叉树的非递归后序遍历(双栈法和双指针法,有图有真相)

    一,前言 本文是原创作品,可能存在不足,欢迎大家指正,礼貌交流,感激不尽. 二,思路 二叉树后序遍历不同于前序遍历和中序遍历,后序遍历是三者之间最难的.下面就让我们来梳理一下代码的逻辑,看看如何轻松地 ...

  9. Python实现二叉树的非递归先序遍历

    思路: 1. 使用列表保存结果: 2. 使用栈(列表实现)存储结点: 3. 当根结点存在,保存结果,根结点入栈: 4. 将根结点指向左子树: 5. 根结点不存在,栈顶元素出栈,并将根结点指向栈顶元素的 ...

最新文章

  1. 【Maven实战】之基础知识点
  2. 1095 Cars on Campus (30 分)【难 / 模拟 未完成】
  3. 【哲学】社会主义与资本主义的区别
  4. Windows下PHP多线程扩展pthreads的安装
  5. 自然语言处理(1)-概述
  6. 8086/8088内部结构
  7. js验证手机号码,邮箱,qq号
  8. python和javaweb开发哪个更火_python和Java哪个更适合web开发?
  9. [随心译]2017.8.5-你家毛茸茸的宠物的荤粮正在加速气候变化
  10. 【SPFA】【最短路】 腾讯大战360
  11. 作宾语,不定式与动名词的区别——脑动词和手动词
  12. 明尼苏达量表结果分析_MMPI明尼苏达多项人格测验量表分析
  13. android数据线接口定义,安卓手机数据线接口类型
  14. Error:403 No valid crumb was included in the request
  15. idea配置tomcat
  16. 2021双非计算机保研之路(经验之谈)
  17. 网线专业测试软件,网线测试仪怎么用_网线测试仪的使用方法图解
  18. 专利申请的流程、材料及费用
  19. 不妨借一步说话,你想知道的关于设计模式的种种,android物联网开发配套代码
  20. 杨百万:这么多年不倒 重要的是信奉落袋为安

热门文章

  1. 借个iPad玩玩,越狱4.2.1成功
  2. 初探SQL Server 2008商业智能
  3. 做个天气预报的小例子
  4. jsp示例-response页面重定向
  5. Golang——时间日期函数
  6. java cache-control_详解浏览器Cache-Control缓存策略
  7. git master代码被删除 怎么恢复_git 分支的删除与恢复
  8. 进程 zabbix_Zabbix监控在windows的进程(非进程数)
  9. python人工智能pdf_800G人工智能学习资料:AI电子书+Python语言入门+教程+机器学习等限时免费领取!...
  10. java 抽象类 方法_java 抽象类