使用C++構(gòu)建一個(gè)二叉樹并輸出。
輸入
輸入根節(jié)點(diǎn)為10,依次輸入6、4、8、14、12、16
代碼如下:
#include
#include
#include
#include
#include
#include
#include
using namespace std;
struct TreeLinkNode // 定義二叉樹
{
int val; // 當(dāng)前節(jié)點(diǎn)值用val表示
struct TreeLinkNode *left; // 指向左子樹的指針用left表示
struct TreeLinkNode *right; // 指向右子樹的指針用right表示
struct TreeLinkNode *parent; //指向父節(jié)點(diǎn)的指針用parent表示
TreeLinkNode(int x) :val(x), left(NULL), right(NULL), parent(NULL) { } // 初始化當(dāng)前結(jié)點(diǎn)值為x,左右子樹、父節(jié)點(diǎn)為空
};
//創(chuàng)建樹
TreeLinkNode* insert(TreeLinkNode* tree, int value)
{
TreeLinkNode* node = (TreeLinkNode*)malloc(sizeof(TreeLinkNode)); // 創(chuàng)建一個(gè)節(jié)點(diǎn)
node->val = value; // 初始化節(jié)點(diǎn)
node->left = NULL;
node->right = NULL;
node->parent = NULL;
TreeLinkNode* temp = tree; // 從樹根開始
while (temp != NULL)
{
if (value < temp->val) // 小于根節(jié)點(diǎn)就進(jìn)左子樹
{
if (temp->left == NULL)
{
temp->left = node; // 新插入的數(shù)為temp的左子樹
node->parent = temp; // temp為新插入的數(shù)的父節(jié)點(diǎn)
return tree;
}
else // 下一輪判斷
temp = temp->left;
}
else // 否則進(jìn)右子樹
{
if (temp->right == NULL)
{
temp->right = node; // 新插入的數(shù)為temp的右子樹
node->parent = temp; // temp為新插入的數(shù)的父節(jié)點(diǎn)
return tree;
}
else // 下一輪判斷
temp = temp->right;
}
}
return tree;
}
// ************* 輸出圖形二叉樹 *************
void output_impl(TreeLinkNode* 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(TreeLinkNode* root)
{
if (root->right)
{
output_impl(root->right, false, "");
}
cout << root->val << endl;
if (root->left)
{
output_impl(root->left, true, "");
}
system("pause");
}
// ***************************************
// ====================測試代碼====================
int main()
{
TreeLinkNode tree = TreeLinkNode(10); // 樹的根節(jié)點(diǎn)
TreeLinkNode* treeresult;
treeresult = insert(&tree, 6); // 輸入n個(gè)數(shù)并創(chuàng)建這個(gè)樹
treeresult = insert(&tree, 4);
treeresult = insert(&tree, 8);
treeresult = insert(&tree, 14);
treeresult = insert(&tree, 12);
treeresult = insert(&tree, 16);
output(treeresult); // 輸出圖形二叉樹
}
輸出
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
圖形
+關(guān)注
關(guān)注
0文章
71瀏覽量
19346 -
C++
+關(guān)注
關(guān)注
22文章
2114瀏覽量
73854 -
二叉樹
+關(guān)注
關(guān)注
0文章
74瀏覽量
12373
發(fā)布評論請先 登錄
相關(guān)推薦
計(jì)算機(jī)二級二叉樹的問題
各位大神,本人馬上要考計(jì)算機(jī)二級了,那個(gè)二叉樹老是弄不明白,比如一個(gè)題目,一棵二叉樹共有25個(gè)節(jié)點(diǎn),其中五個(gè)葉子節(jié)點(diǎn),則度為1的節(jié)點(diǎn)數(shù)為?
發(fā)表于 09-04 09:45
基于二叉樹的時(shí)序電路測試序列設(shè)計(jì)
為了實(shí)現(xiàn)時(shí)序電路狀態(tài)驗(yàn)證和故障檢測,需要事先設(shè)計(jì)一個(gè)輸入測試序列。基于二叉樹節(jié)點(diǎn)和樹枝的特性,建立時(shí)序電路狀態(tài)二叉樹,按照電路二叉樹節(jié)點(diǎn)(狀態(tài))與樹枝(輸入)的層次邏輯
發(fā)表于 07-12 13:57
?0次下載
二叉樹層次遍歷算法的驗(yàn)證
實(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
?2119次閱讀
二叉樹,一種基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)類型
然后我們再定義一棵深度也為 3 的二叉樹,該二叉樹的 n 個(gè)結(jié)點(diǎn)(n≤7),當(dāng)從 1 到 n 的每個(gè)結(jié)點(diǎn)都與上圖中的編號結(jié)點(diǎn)一一對應(yīng)時(shí),這二叉樹就稱為完全
紅黑樹(Red Black Tree)是一種自平衡的二叉搜索樹
平衡(Balance):就是當(dāng)結(jié)點(diǎn)數(shù)量固定時(shí),左右子樹的高度越接近,這棵二叉樹越平衡(高度越低)。而最理想的平衡就是完全二叉樹/滿二叉樹,高度最小的二叉樹。
二叉樹操作的相關(guān)知識和代碼詳解
樹是數(shù)據(jù)結(jié)構(gòu)中的重中之重,尤其以各類二叉樹為學(xué)習(xí)的難點(diǎn)。在面試環(huán)節(jié)中,二叉樹也是必考的模塊。本文主要講二叉樹操作的相關(guān)知識,梳理面試常考的內(nèi)容。請大家跟隨小編一起來復(fù)習(xí)吧。 本篇針對面
二叉樹的前序遍歷非遞歸實(shí)現(xiàn)
我們之前說了二叉樹基礎(chǔ)及二叉的幾種遍歷方式及練習(xí)題,今天我們來看一下二叉樹的前序遍歷非遞歸實(shí)現(xiàn)。 前序遍歷的順序是, 對于樹中的某節(jié)點(diǎn),先遍歷該節(jié)點(diǎn),然后再遍歷其左子樹,最后遍歷其右子
C++基礎(chǔ)語法中的二叉樹詳解
本期是C++基礎(chǔ)語法分享的第十四節(jié),今天給大家來梳理一下樹! ? 二叉樹 BinaryTree.cpp: #include 《stdio.h》#include 《stdlib.h》 #define
C語言數(shù)據(jù)結(jié)構(gòu):什么是二叉樹?
完全二叉樹:完全二叉樹是效率很高的數(shù)據(jù)結(jié)構(gòu)。對于深度為K,有n個(gè)節(jié)點(diǎn)的二叉樹,當(dāng)且僅當(dāng)每一個(gè)節(jié)點(diǎn)都與深度為K的滿二叉樹中編號從1至n的節(jié)點(diǎn)一一對應(yīng)時(shí),稱為完全
怎么就能構(gòu)造成二叉樹呢?
一直跟著公眾號學(xué)算法的錄友 應(yīng)該知道,我在二叉樹:構(gòu)造二叉樹登場!,已經(jīng)講過,只有 中序與后序 和 中序和前序 可以確定一顆唯一的二叉樹。前序和后序是不能確定唯一的二叉樹的。
評論