構建完全二叉樹、控制台列印二叉樹

來源:互聯網
上載者:User

標籤:

兩段比較實用的代碼,一個用於根據輸入的數組構建一棵完全二叉樹,一個用於在控制台列印二叉樹,方便查看樹的結構(列印二叉樹的代碼是在網上找的,現在找不到出處了,向作者抱歉)。

//首先是節點的結構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>\n", root->val);//列印"|—<id>"形式    printTree(root->left, blk + 1);//列印子樹,累加縮排次數    printTree(root->right, blk + 1);//列印子樹,累加縮排次數    }

 

構建完全二叉樹、控制台列印二叉樹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.