1. 程式人生 > >資料結構 找樹根和孩子(樹)

資料結構 找樹根和孩子(樹)

樹的儲存結構:

•方法1:陣列,稱為“父親表示法”。

  constint m = 10;           //樹的結點數

  struct node

  {

      int data, parent;        //資料域,指標域

  };

  node tree[m];

例如:tree[2]=1;//表示節點2的父親節點為1

 優缺點:利用了樹中除根結點外每個結點都有唯一的父結點這個性質。很容易找到樹根,但找孩子時需要遍歷整個線性表。 

例題:找樹根和孩子

【問題描述】

  給定一棵樹,輸出樹的根root,孩子最多的結點max以及他的孩子

【輸入格式】

  第一行:n(結點數<=100),m(邊數<=200)。  

    以下m行;每行兩個結點x和y,

    表示y是x的孩子(x,y<=1000)。

【輸出格式】

 第一行:樹根:root。  

    第二行:孩子最多的結點max。   

    第三行:max的孩子。

【輸入樣例】

  8 7

  4 1

  4 2

  1 3

  1 5

  2 6

  2 7

  2 8


【輸出樣例】

  4

  2

  6 7 8

分析:


程式碼:

#include<iostream>
using namespace std;
int n,m,tree[101]={0};
int main()
{
	int i,x,y,root,maxroot,sum=0,j,Max=0;
	cin>>n>>m;//節點和邊的數目 
	for(i=1;i<=m;i++)
	{
		cin>>x>>y;
		tree[y]=x;//y是x的孩子 
	}
	for(i=1;i<=n;i++)//找出樹根 
	{
		if(tree[i]==0)// i的父親節點為0,即沒有父親節點 
		{
			root=i;
			break;
		} 
	}
	for(i=1;i<=n;i++)//找孩子最多的節點maxroot
	{
		sum=0;
for(j=1;j<=n;j++) { if(tree[j]==i) sum++; } if(sum>Max) { Max=sum; maxroot=i; } } cout<<root<<endl<<maxroot<<endl; for(i=1;i<=n;i++)//maxroot的孩子 { if(tree[i]==maxroot) cout<<i<<" "; } return 0; }


相關推薦

資料結構 樹根孩子

樹的儲存結構: •方法1:陣列,稱為“父親表示法”。   constint m = 10;           //樹的結點數   struct node   {       int data, parent;        //資料域,指標域   };   nod

[資料結構][C++] 查詢排序雜湊表儲存基本思想

雜湊表類概念摘要 雜湊表類SqHash的建立、查詢。設有若干個學生的考試成績,採用除留餘數求雜湊地址,將學生的資訊儲存到該地址空間,並且採用線性探測法解決衝突問題。 雜湊表又稱散列表。 雜湊表儲存的基本思想是:以資料表中的每個記錄的關鍵字 k為自變數,通過一種函式H(

《 常見演算法與資料結構》符號表ST4——二叉查詢刪除 附動畫

符號表ST(4)——二叉查詢樹刪除 (附動畫) 本系列文章主要介紹常用的演算法和資料結構的知識,記錄的是《Algorithms I/II》課程的內容,採用的是“演算法(第4版)”這本紅寶書作為

PTA資料結構與演算法題目集中文4-12 二叉搜尋的操作集 (30分)

本題要求實現給定二叉搜尋樹的5種常用操作。 函式介面定義: BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree BST, ElementType X ); Position Fin

PTA 資料結構與演算法題目集中文 6-9 二叉的遍歷

6-9 二叉樹的遍歷(25 分)本題要求給定二叉樹的4種遍歷。函式介面定義:void InorderTraversal( BinTree BT ); void PreorderTraversal( Bi

PTA資料結構與演算法題目集中文5-1 最大子列問題 (20分)

給定KK個整陣列成的序列{ N_1N​1​​, N_2N​2​​, ..., N_KN​K​​ },“連續子列”被定義為{ N_iN​i​​, N_{i+1}N​i+1​​, ..., N_jN​j​​ },其中 1 \le i \le j \le K1≤i≤j≤

PTA資料結構與演算法題目集中文4-9 二叉的遍歷 (25分)

本題要求給定二叉樹的4種遍歷。 函式介面定義: void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void PostorderTraversal( BinTree BT

資料結構——圖—概念儲存鄰接矩陣,鄰接表

圖的概念 為什麼要有圖 在學習圖之前我們應該學習了,線性表和樹;但是我們有沒有考慮過為什麼要有圖,線性表和圖的侷限性優勢上面呢? 線性表他僅僅侷限於一個直接前驅和一個直接後繼的關係。 樹呢?樹也僅僅只能有一個直接前驅也就是父節點。 那麼這種多對

《 常見演算法與資料結構》符號表ST2——初等實現分析有序符號表

符號表(Symbol Table) (2) 本系列文章主要介紹常用的演算法和資料結構的知識,記錄的是《Algorithms I/II》課程的內容,採用的是“演算法(第4版)”這本紅寶書作為學習教材的,語言是java。這本書的名氣我不用多說吧?豆瓣評分9.

PTA 資料結構與演算法題目集中文5-3 的同構 (25分)

#include <stdio.h> #include <string.h> /* 題目以26個大寫字母為結點值,可以建立一個26*2的二維陣列 表示結點以及結點的左右結點 若只有一個結點,則判斷兩根是否相同 若有多節點,則先將前一棵樹的結點的左右結

淺談樹形結構的特性應用:多叉,紅黑,堆,Trie,B,B+...

![](https://upload-images.jianshu.io/upload_images/10998555-e78c27fcd134946d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 上篇文章我們主要介紹了線性資料結構,本篇

考研資料結構複習之線性表

單鏈表的學習 #pragma once typedef char DataType; class SSeqListTest { public: SSeqListTest(); ~SSeqListTest(); }; typedef struct Node {

資料結構基礎之線性表

轉自:http://www.cnblogs.com/edisonchou/p/4614934.html   線性表(下) 在上一篇中,我們瞭解了單鏈表與雙鏈表,本次將單鏈表中終端結點的指標端由空指標改為指向頭結點,就使整個單鏈表形成一個環,這種頭尾相接的單鏈表稱為單迴圈連結串列

資料結構與演算法——單鏈表

單鏈表的頭插法,插入時就是逆序。 InsertList()還不完善。 #include<stdio.h> #include<stdlib.h> #define ERROR 0 #define OK 1 typedef int Status ; typedef int

資料結構與演算法——線性表

#include <stdio.h> #include <stdlib.h> #define LIST_INIT_SIZE 200 #define LISTINCREASE 10 #define ERROR 0 #define OK 1 typedef int Elemt

資料結構】希爾排序ShellSort

  概念: 希爾排序法,又稱縮小增量法。希爾排序法的基本思想是:先選定一個整數, 把待排序檔案中所有資料分成幾個組,所有距離為gap的資料分在同一組內,並對每一組內的資料進行排序。 然後,去重複上述分組和排序的工作。當到達gap=1時,所有資料在一組內

資料結構】基礎知識點整理4

1.順序表提供隨機讀取功能,不需要經過指標的頻繁跳轉,儲存效率很高。 2.線性表的順序儲存結構是一種隨機存取的儲存結構,鏈式儲存結構是一種順序存取的儲存結構,順序儲存指記憶體地址是一塊的,隨機存取是指訪問時可以按下標隨機訪問。 3.在棧中,棧頂指標的動態變化決定棧中元素的個數;在鏈式儲存結構

【Python資料結構與演算法】Array陣列

Array(陣列) 下圖為6個元素 [15, 6, 12, 9, 13, 20] 的陣列: 陣列是一個盛有單一型別固定數量值的容器類 以0開始的索引 陣列的元素帶編號,編號從0開始,如上圖中,元素6的位置1;而元素15的位置為0 元素的位

資料結構之雙端佇列Deque

1,雙端佇列定義   雙端佇列:其兩端都可以入列和出列的資料結構,如下圖所示,佇列後面(rear)可以加入和移出資料,佇列前面(front)可以加入和移出資料        雙端佇列操作: deque=Deque() # 建立雙端佇列 addFront(item) #在佇列前面加入資料 a

資料結構與演算法題目集中文 6-1 單鏈表逆轉 20 分

本題要求實現一個函式,將給定的單鏈表逆轉。 函式介面定義: List Reverse( List L ); 其中List結構定義如下: typedef struct Node *PtrToNode; struct Node { ElementType Dat