zoukankan      html  css  js  c++  java
  • 【leetcode】144. 二叉树的前序遍历

    void recursion(struct TreeNode* root,int* returnSize,int* arr){
        if (!root)
            return;    
        arr[(*returnSize)++]=root->val;
        recursion(root->left,returnSize,arr);
        recursion(root->right,returnSize,arr);
    }
    int* preorderTraversal(struct TreeNode* root, int* returnSize){
        int* arr=(int*)calloc(1000,sizeof(int));
        *returnSize=0;
        recursion(root,returnSize,arr);
        return arr;
    }
    int* preorderTraversal(struct TreeNode* root, int* returnSize) {
        int* res = malloc(sizeof(int) * 2000);
        *returnSize = 0;
        if (root == NULL) {
            return res;
        }
    
        struct TreeNode* stk[2000];
        struct TreeNode* node = root;
        int stk_top = 0;
        while (stk_top > 0 || node != NULL) {
            while (node != NULL) {
                res[(*returnSize)++] = node->val;
                stk[stk_top++] = node;
                node = node->left;
            }
            node = stk[--stk_top];
            node = node->right;
        }
        return res;
    }
    int* preorderTraversal(struct TreeNode* root, int* returnSize) {
        int* res = malloc(sizeof(int) * 2000);
        *returnSize = 0;
        if (root == NULL) {
            return res;
        }
    
        struct TreeNode *p1 = root, *p2 = NULL;
    
        while (p1 != NULL) {
            p2 = p1->left;
            if (p2 != NULL) {
                while (p2->right != NULL && p2->right != p1) {
                    p2 = p2->right;
                }
                if (p2->right == NULL) {
                    res[(*returnSize)++] = p1->val;
                    p2->right = p1;
                    p1 = p1->left;
                    continue;
                } else {
                    p2->right = NULL;
                }
            } else {
                res[(*returnSize)++] = p1->val;
            }
            p1 = p1->right;
        }
        return res;
    }
  • 相关阅读:
    STM32 USB应用——VCP
    基础数据类型与字节数组相互转换 BitConvter类
    C# 16进制与字符串、字节数组之间的转换
    C语言函数手册学习
    C串口通信
    C#串口通信
    C Socket通信编程
    C SOCKET编程
    C# SOCKE通信
    socket阻塞与非阻塞,同步与异步、I/O模型
  • 原文地址:https://www.cnblogs.com/ganxiang/p/14173880.html
Copyright © 2011-2022 走看看