zoukankan      html  css  js  c++  java
  • 构建完全二叉树、控制台打印二叉树

    两段比较实用的代码,一个用于根据输入的数组构建一棵完全二叉树,一个用于在控制台打印二叉树,方便查看树的结构(打印二叉树的代码是在网上找的,现在找不到出处了,向作者抱歉)。

    //首先是节点的结构
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
        }
    };
    
    ///构建完全二叉树,用到了队列
    TreeNode * constructTree(int arr[], int length)
    {
        if (length <= 0) return NULL;
        list<TreeNode*> nodeList;
        TreeNode *root = new TreeNode(arr[0]);
        nodeList.push_back(root);
        for (int i = 1; i < length; i++)
        {
            TreeNode *node = new TreeNode(arr[i]);
            while (!nodeList.empty())
            {
                TreeNode *top = nodeList.front();
                if (!top->left)
                {
                    top->left = node;
                    nodeList.push_back(node);
                    break;
                }
                else if (!top->right)
                {
                    top->right = node;
                    nodeList.push_back(node);
                    break;
                }
                else
                    nodeList.pop_front();
            }
        }
        return root;
    }
    //打印二叉树,使用了先序遍历的方法
    void printTree(TreeNode *root, int blk = 0)
    {
        if (root == NULL)
            return;
        for (int i = 0; i < blk; i++) printf("    ");//缩进
        printf("|—<%d>
    ", root->val);//打印"|—<id>"形式
    
        printTree(root->left, blk + 1);//打印子树,累加缩进次数
        printTree(root->right, blk + 1);//打印子树,累加缩进次数    
    }
  • 相关阅读:
    基础语法
    Python简介
    Linux安装Python
    Git安装和使用
    vue 表单验证省市县三联动
    js 异步问题
    Json对象与Json字符串互转(4种转换方式)
    vue 常用的表单验证,包括手机号码,固定电话和身份证...
    webpack 基本功能和原理
    测试build出来的dist文件夹是否编译成功
  • 原文地址:https://www.cnblogs.com/cLockey/p/4769372.html
Copyright © 2011-2022 走看看