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);//打印子树,累加缩进次数    
    }
  • 相关阅读:
    .csproj文件
    堆栈
    数据库操作(一)
    Math数学函数
    SSM框架下各个层的解释说明
    MyBatis DAO层传递参数到mapping.xml
    Spring MVC3在controller和视图之间传递参数的方法
    注册/登陆界面验证码的作用及代码实现
    input中name和id的区别
    <mvc:default-servlet-handler/>的作用
  • 原文地址:https://www.cnblogs.com/cLockey/p/4769372.html
Copyright © 2011-2022 走看看