chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++構(gòu)建并復(fù)制二叉樹

jf_96884364 ? 來源:jf_96884364 ? 作者:jf_96884364 ? 2023-01-10 15:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

使用C++構(gòu)建一個二叉樹并復(fù)制、輸出。

程序

#include 
#include 
//#include 
#include 
#include
#include  
#include

#include 
using namespace std;



struct TreeNode          // 定義二叉樹
{
    int val;                       // 當(dāng)前節(jié)點值用val表示
    struct TreeNode *left;     // 指向左子樹的指針用left表示
    struct TreeNode *right;    // 指向右子樹的指針用right表示
    TreeNode(int x) :val(x), left(NULL), right(NULL) { } // 初始化當(dāng)前結(jié)點值為x,左右子樹為空
};


//創(chuàng)建樹
TreeNode* insert(TreeNode* tree, int value)
{
    
    TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode)); // 創(chuàng)建一個節(jié)點
    node->val = value;      // 初始化節(jié)點                            // malloc函數(shù)可以分配長度
    node->left = NULL;
    node->right = NULL;

    TreeNode* temp = tree;      // 從樹根開始
    while (temp != NULL)
    {
        if (value < temp->val)  // 小于根節(jié)點就進(jìn)左子樹
        {
            if (temp->left == NULL)
            {
                temp->left = node;  // 新插入的數(shù)為temp的左子樹
                return tree;
            }
            else           // 下一輪判斷
                temp = temp->left;
        }
        else           // 否則進(jìn)右子樹
        {    

            if (temp->right == NULL)
            {
                temp->right = node;  // 新插入的數(shù)為temp的右子樹
                return tree;
            }
            else           // 下一輪判斷
                temp = temp->right;
        }
    }
    return tree;
}
 
//  ************* 輸出圖形二叉樹 *************
void output_impl(TreeNode* n, bool left, string const& indent)
{
    if (n->right)
    {
        output_impl(n->right, false, indent + (left ? "|     " : "      "));
    }
    cout << indent;
    cout << (left ? '\\' : '/');
    cout << "-----";
    cout << n->val << endl;
    if (n->left)
    {
        output_impl(n->left, true, indent + (left ? "      " : "|     "));
    }
}
void output(TreeNode* root)
{
    if (root->right)
    {
        output_impl(root->right, false, "");
    }
    cout << root->val << endl;
    if (root->left)
    {
        output_impl(root->left, true, "");
    }
    system("pause");
}
//  ******************************************



void CopyBiTree(TreeNode* root, TreeNode* newroot) //  復(fù)制二叉樹
{
    if (root == nullptr)
        return;
    else
    {
        newroot->val = root->val;
        if (root->left != nullptr)
            newroot->left = new TreeNode(0);
        if (root->right != nullptr)
            newroot->right = new TreeNode(0);

        CopyBiTree(root->left, newroot->left);
        CopyBiTree(root->right, newroot->right);
    }
    //output(newroot);
}


// ====================測試代碼====================
int main()
{
    TreeNode* tree =new TreeNode(10);       // 樹的根節(jié)點
    TreeNode* treeresult;

    treeresult = insert(tree, 6);         // 輸入n個數(shù)并創(chuàng)建這個樹
    treeresult = insert(tree, 4);
    treeresult = insert(tree, 8);
    treeresult = insert(tree, 14);
    treeresult = insert(tree, 12);
    treeresult = insert(tree, 16);

    TreeNode* mirroot = new TreeNode(10);
    CopyBiTree(treeresult, mirroot); //  復(fù)制二叉樹
    output(treeresult);         //  輸出原二叉樹
    output(mirroot);         //  輸出復(fù)制的二叉樹


}

結(jié)果

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3832

    瀏覽量

    84369
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2120

    瀏覽量

    76462
  • 二叉樹
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    12818
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    計算機二叉樹的問題

    各位大神,本人馬上要考計算機級了,那個二叉樹老是弄不明白,比如一個題目,一棵二叉樹共有25個節(jié)點,其中五個葉子節(jié)點,則度為1的節(jié)點數(shù)為?
    發(fā)表于 09-04 09:45

    二叉樹算法在單總線技術(shù)中的應(yīng)用

    介紹了單總線技術(shù)和二叉樹算法。單總線技術(shù)可以將地址線、數(shù)據(jù)線和控制線合成一根線,允許在這根線上掛接多個單總線器件。提出了用二叉樹算法搜索單總線器件注冊碼,
    發(fā)表于 03-16 09:38 ?20次下載

    基于二叉樹的時序電路測試序列設(shè)計

    為了實現(xiàn)時序電路狀態(tài)驗證和故障檢測,需要事先設(shè)計一個輸入測試序列。基于二叉樹節(jié)點和樹枝的特性,建立時序電路狀態(tài)二叉樹,按照電路二叉樹節(jié)點(狀態(tài))與樹枝(輸入)的層次邏輯
    發(fā)表于 07-12 13:57 ?0次下載
    基于<b class='flag-5'>二叉樹</b>的時序電路測試序列設(shè)計

    二叉樹層次遍歷算法的驗證

    實現(xiàn)二叉樹的層次遍歷算法,對用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”創(chuàng)建的二叉樹進(jìn)行測試。
    發(fā)表于 11-28 01:05 ?2305次閱讀
    <b class='flag-5'>二叉樹</b>層次遍歷算法的驗證

    二叉樹,一種基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)類型

    然后我們再定義一棵深度也為 3 的二叉樹,該二叉樹的 n 個結(jié)點(n≤7),當(dāng)從 1 到 n 的每個結(jié)點都與上圖中的編號結(jié)點一一對應(yīng)時,這二叉樹就稱為完全二叉樹。
    的頭像 發(fā)表于 04-13 10:48 ?4802次閱讀
    <b class='flag-5'>二叉樹</b>,一種基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)類型

    詳解電源二叉樹到底是什么

    作為數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ),分很多種,像 AVL 、紅黑、二叉搜索....今天我想分享的是關(guān)于二叉樹
    的頭像 發(fā)表于 06-06 15:05 ?1.1w次閱讀
    詳解電源<b class='flag-5'>二叉樹</b>到底是什么

    C語言二叉樹代碼免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語言二叉樹代碼免費下載。
    發(fā)表于 08-27 08:00 ?1次下載

    二叉樹操作的相關(guān)知識和代碼詳解

    是數(shù)據(jù)結(jié)構(gòu)中的重中之重,尤其以各類二叉樹為學(xué)習(xí)的難點。在面試環(huán)節(jié)中,二叉樹也是必考的模塊。本文主要講二叉樹操作的相關(guān)知識,梳理面試常考的內(nèi)容。請大家跟隨小編一起來復(fù)習(xí)吧。 本篇針對面
    的頭像 發(fā)表于 12-12 11:04 ?2376次閱讀
    <b class='flag-5'>二叉樹</b>操作的相關(guān)知識和代碼詳解

    二叉樹的前序遍歷非遞歸實現(xiàn)

    我們之前說了二叉樹基礎(chǔ)及二叉的幾種遍歷方式及練習(xí)題,今天我們來看一下二叉樹的前序遍歷非遞歸實現(xiàn)。 前序遍歷的順序是, 對于中的某節(jié)點,先遍歷該節(jié)點,然后再遍歷其左子樹,最后遍歷其右子
    的頭像 發(fā)表于 05-28 13:59 ?2317次閱讀

    C++基礎(chǔ)語法中的二叉樹詳解

    本期是C++基礎(chǔ)語法分享的第十四節(jié),今天給大家來梳理一下! ? 二叉樹 BinaryTree.cpp: #include 《stdio.h》#include 《stdlib.h》 #define
    的頭像 發(fā)表于 09-29 18:02 ?2585次閱讀

    C語言數(shù)據(jù)結(jié)構(gòu):什么是二叉樹?

    完全二叉樹:完全二叉樹是效率很高的數(shù)據(jù)結(jié)構(gòu)。對于深度為K,有n個節(jié)點的二叉樹,當(dāng)且僅當(dāng)每一個節(jié)點都與深度為K的滿二叉樹中編號從1至n的節(jié)點一一對應(yīng)時,稱為完全
    的頭像 發(fā)表于 04-21 16:20 ?4170次閱讀

    怎么就能構(gòu)造成二叉樹呢?

    一直跟著公眾號學(xué)算法的錄友 應(yīng)該知道,我在二叉樹:構(gòu)造二叉樹登場!,已經(jīng)講過,只有 中序與后序 和 中序和前序 可以確定一顆唯一的二叉樹。前序和后序是不能確定唯一的二叉樹的。
    的頭像 發(fā)表于 07-14 11:20 ?2018次閱讀

    使用C語言代碼實現(xiàn)平衡二叉樹

    這篇博客主要總結(jié)平衡二叉樹,所以,二叉排序樹知識不會提及,但是會用到。
    的頭像 發(fā)表于 09-21 11:00 ?1556次閱讀

    二叉樹的代碼實現(xiàn)

    二叉樹的主要操作有遍歷,例如有先序遍歷、中序遍歷、后序遍歷。在遍歷之前,就是創(chuàng)建一棵二叉樹,當(dāng)然,還需要有刪除二叉樹的算法。
    的頭像 發(fā)表于 01-18 10:41 ?1615次閱讀
    <b class='flag-5'>二叉樹</b>的代碼實現(xiàn)

    C++自定義二叉樹輸出二叉樹圖形

    使用C++構(gòu)建一個二叉樹輸出。
    的頭像 發(fā)表于 01-10 16:29 ?2188次閱讀
    <b class='flag-5'>C++</b>自定義<b class='flag-5'>二叉樹</b><b class='flag-5'>并</b>輸出<b class='flag-5'>二叉樹</b>圖形