મુખ્ય સામગ્રી પર જાઓ
  1. સંસાધનો/
  2. અભ્યાસ સામગ્રી/
  3. ઇન્ફોર્મેશન અને કમ્યુનિકેશન ટેકનોલોજી એન્જિનિયરિંગ/
  4. આઈસીટી સેમેસ્ટર 3/
  5. ડેટા સ્ટ્રક્ચર્સ એન્ડ એલ્ગોરિધમ્સ (1333203)/

ડેટા સ્ટ્રક્ચર અને એપ્લિકેશન (1333203) - વિન્ટર 2024 સોલ્યુશન

12 મિનિટ· ·
અભ્યાસ-સામગ્રી સોલ્યુશન ડેટા-સ્ટ્રક્ચર 1333203 2024 વિન્ટર
મિલવ ડબગર
લેખક
મિલવ ડબગર
ઇલેક્ટ્રિકલ અને ઇલેક્ટ્રોનિક મેન્યુફેક્ચરિંગ ઉદ્યોગમાં અનુભવી લેક્ચરર. એમ્બેડેડ સિસ્ટમ્સ, ઈમેજ પ્રોસેસિંગ, ડેટા સાયન્સ, મેટલેબ, પાયથન, STM32માં કુશળ. એલ.ડી. કોલેજ ઓફ એન્જિનિયરિંગ - અમદાવાદથી કમ્યુનિકેશન સિસ્ટમ્સ એન્જિનિયરિંગમાં માસ્ટર્સ ડિગ્રી ધરાવતા મજબૂત શિક્ષણ વ્યાવસાયિક.
અનુક્રમણિકા

પ્રશ્ન 1(અ) [3 ગુણ]
#

રેખીય ડેટા સ્ટ્રક્ચર્સના નામ લખો.

જવાબ:

રેખીય ડેટા સ્ટ્રક્ચર્સ
1. એરે (Array)
2. સ્ટેક (Stack)
3. ક્યુ (Queue)
4. લિંક્ડ લિસ્ટ (Linked List)

યાદ રાખવાની યુક્તિ: “બધા વિદ્યાર્થીઓ લાઈનમાં ઊભા રહે છે”

પ્રશ્ન 1(બ) [4 ગુણ]
#

ટાઇમ અને સ્પેસ કોમ્પલેક્ષીટી વ્યાખ્યાયીત કરો.

જવાબ:

કોમ્પ્લેક્સિટી પ્રકારવ્યાખ્યાનોટેશન
ટાઇમ કોમ્પ્લેક્સિટીમાપે છે કે ઇનપુટ સાઇઝ વધતાં એક્ઝિક્યુશન ટાઇમ કેવી રીતે વધે છેO(n), O(1), O(log n)
સ્પેસ કોમ્પ્લેક્સિટીમાપે છે કે ઇનપુટ સાઇઝ વધતાં મેમરી વપરાશ કેવી રીતે વધે છેO(n), O(1), O(log n)

ડાયાગ્રામ:

I(NnP)UTSIZETOI(MnE)ALGORITHMSOP(AnC)E

યાદ રાખવાની યુક્તિ: “ટાઇમ સ્ટેપ્સ, સ્પેસ સ્ટોર્સ”

પ્રશ્ન 1(ક) [7 ગુણ]
#

ઉદાહરણ સાથે ક્લાસ અને ઓબ્જેક્ટનો કોન્સેપ્ટ સમજાવો.

જવાબ:

ડાયાગ્રામ:

classDiagram
    class Student {
        -int rollNo
        -string name
        +setData()
        +displayData()
    }

કોન્સેપ્ટવ્યાખ્યાઉદાહરણ
ક્લાસઓબ્જેક્ટ બનાવવા માટેનો બ્લૂપ્રિન્ટ અથવા ટેમ્પલેટStudent ક્લાસ જેમાં properties (rollNo, name) અને methods (setData, displayData) છે
ઓબ્જેક્ટક્લાસનું ચોક્કસ ડેટા ધરાવતું ઇન્સ્ટન્સstudent1 (rollNo=101, name=“રાજ”)

કોડ ઉદાહરણ:

class Student:
    def __init__(self):
        self.rollNo = 0
        self.name = ""
        
    def setData(self, r, n):
        self.rollNo = r
        self.name = n
        
    def displayData(self):
        print(self.rollNo, self.name)

# ઓબ્જેક્ટ બનાવવા
student1 = Student()
student1.setData(101, "રાજ")

યાદ રાખવાની યુક્તિ: “ક્લાસ બનાવે, ઓબ્જેક્ટ વાપરે”

પ્રશ્ન 1(ક) OR [7 ગુણ]
#

વિદ્યાર્થીઓના રેકોર્ડ્સ ને સંચાલિત કરવા માટેનો એક ક્લાસ બનાવો જેમા વિદ્યાર્થીને ઉમેરવા તેમજ બાદ કરવા માટેની મેથડ હોય.

જવાબ:

ડાયાગ્રામ:

classDiagram
    class StudentManager {
        -Student[] students
        -int count
        +addStudent()
        +removeStudent()
        +displayAll()
    }

કોડ:

class StudentManager:
    def __init__(self):
        self.students = []
        
    def addStudent(self, roll, name):
        student = Student()
        student.setData(roll, name)
        self.students.append(student)
        
    def removeStudent(self, roll):
        for i in range(len(self.students)):
            if self.students[i].rollNo == roll:
                self.students.pop(i)
                break
    
    def displayAll(self):
        for student in self.students:
            student.displayData()

યાદ રાખવાની યુક્તિ: “ઉમેરો વધારે, કાઢો ઘટાડે”

પ્રશ્ન 2(અ) [3 ગુણ]
#

ક્લાસમાં કન્સ્ટ્રક્ટરનું મહત્વ સમજાવો.

જવાબ:

કન્સ્ટ્રક્ટરનું મહત્વ
1. ઓબ્જેક્ટના ડેટા મેમ્બર્સને પ્રારંભિક મૂલ્ય આપે છે
2. ઓબ્જેક્ટ બનતી વખતે આપોઆપ કોલ થાય છે
3. અલગ અલગ પ્રકારના હોઈ શકે (ડિફોલ્ટ, પેરામીટરાઈઝ્ડ, કોપી)

યાદ રાખવાની યુક્તિ: “શરૂઆત હંમેશા સારી”

પ્રશ્ન 2(બ) [4 ગુણ]
#

સ્ટેક પર વિવિધ ઓપરેશન સમજાવો.

જવાબ:

ઓપરેશનવર્ણનઉદાહરણ
પુશ (Push)ટોપ પર એલિમેન્ટ ઉમેરે છેpush(5)
પોપ (Pop)ટોપ પરથી એલિમેન્ટ દૂર કરે છેx = pop()
પીક/ટોપ (Peek/Top)ટોપ એલિમેન્ટને દૂર કર્યા વગર જુએ છેx = peek()
isEmptyચકાસે છે કે સ્ટેક ખાલી છે કે નહીંif(isEmpty())

ડાયાગ્રામ:

PU578SHPEEK/TOPPO872P

યાદ રાખવાની યુક્તિ: “નાખો કાઢો જુઓ”

પ્રશ્ન 2(ક) [7 ગુણ]
#

*પોસ્ટફિક્સ એક્સપ્રેશન ABC+D/ નું મૂલ્યાંકન અલગોરિધમનું વર્ણન કરો.

જવાબ:

ડાયાગ્રામ:

InpAut:BRAeaBdCCle+fttDo/rigDht
સ્ટેપસિમ્બોલએક્શનસ્ટેક
1Aસ્ટેક પર પુશ કરોA
2Bસ્ટેક પર પુશ કરોA,B
3Cસ્ટેક પર પુશ કરોA,B,C
4+B,C પોપ કરો; B+C પુશ કરોA,B+C
5*A,B+C પોપ કરો; A*(B+C) પુશ કરોA*(B+C)
6Dસ્ટેક પર પુશ કરોA*(B+C),D
7/A*(B+C),D પોપ કરો; A*(B+C)/D પુશ કરોA*(B+C)/D

યાદ રાખવાની યુક્તિ: “વાંચો, પુશ કરો, પોપ કરો, ગણતરી કરો”

પ્રશ્ન 2(અ) OR [3 ગુણ]
#

સ્ટેક અને ક્યુ વચ્ચેનો તફાવત લખો.

જવાબ:

ફીચરસ્ટેકક્યુ
સિદ્ધાંતLIFO (છેલ્લું આવે પહેલું જાય)FIFO (પહેલું આવે પહેલું જાય)
ઓપરેશનપુશ/પોપએનક્યુ/ડિક્યુ
એક્સેસ પોઈન્ટ્સએક છેડો (ટોપ)બે છેડા (ફ્રન્ટ, રીઅર)

યાદ રાખવાની યુક્તિ: “સ્ટેક છેલ્લું પહેલું, ક્યુ પહેલું પહેલું”

પ્રશ્ન 2(બ) OR [4 ગુણ]
#

સર્ક્યુલર ક્યુ નો કોન્સેપ્ટ સમજાવો.

જવાબ:

ડાયાગ્રામ:

graph TD
    A[Front] --> B[1]
    B --> C[2]
    C --> D[3]
    D --> E[4]
    E --> F[5]
    F --> G[Rear]
    G --> A

ફીચરવર્ણન
સ્ટ્રક્ચરછેડાઓ જોડાયેલ હોય તેવો લીનિયર ડેટા સ્ટ્રક્ચર
ફાયદોખાલી જગ્યાનો ફરીથી ઉપયોગ કરીને મેમરી કાર્યક્ષમ રીતે વાપરે છે
ઓપરેશનએનક્યુ, ડિક્યુ (મોડ્યુલો ગણતરી સાથે)

યાદ રાખવાની યુક્તિ: “સર્ક્યુલર ફ્રન્ટને રીઅર સાથે જોડે”

પ્રશ્ન 2(ક) OR [7 ગુણ]
#

સિંગલી લિંક્ડ લિસ્ટમાં આપેલ નોડ પછી અને પહેલાં નવા નોડ દાખલ કરવાની પ્રક્રિયાનું વર્ણન કરો.

જવાબ:

ડાયાગ્રામ:

IBAIBAnefnefsftsfteoeeoerrrrrrte:te:::ABfAAeAAtfeorrXXeXNNoNdoeBNdBXeX:XB:B
ઇન્સર્શનસ્ટેપ્સ
નોડ X પછી1. નવો નોડ N બનાવો
2. N નો next X ના next પર સેટ કરો
3. X નો next N પર સેટ કરો
નોડ X પહેલા1. નવો નોડ N બનાવો
2. X પર પોઇન્ટ કરતો નોડ A શોધો
3. N નો next X પર સેટ કરો
4. A નો next N પર સેટ કરો

યાદ રાખવાની યુક્તિ: “પછી: લિંક બદલો, પહેલા: અગાઉનો શોધો”

પ્રશ્ન 3(અ) [3 ગુણ]
#

લિંક્ડ લિસ્ટ મા એક છેડાથી બીજા છેડા સુધી પસાર થવાની પ્રક્રિયા સમજાવો.

જવાબ:

ડાયાગ્રામ:

startV[i1s0i]tV[i2s0i]tV[i3s0i]tNULL
સ્ટેપએક્શન
1હેડ નોડથી શરૂ કરો
2વર્તમાન નોડનો ડેટા એક્સેસ કરો
3પોઈન્ટરને આગળના નોડ પર ખસેડો
4NULL મળે ત્યાં સુધી દોહરાવો

યાદ રાખવાની યુક્તિ: “શરૂ કરો, જુઓ, આગળ વધો, દોહરાવો”

પ્રશ્ન 3(બ) [4 ગુણ]
#

ઇનફિક્સથી પોસ્ટફિક્સમાં એક્સપ્રેસનનું રૂપાંતર સમજાવો.

જવાબ:

ડાયાગ્રામ:

IPnofsitxf:ix:AA+BBCC
સ્ટેપએક્શનસ્ટેકઆઉટપુટ
1ડાબેથી જમણે સ્કેન કરો
2જો ઓપરેન્ડ હોય, તો આઉટપુટમાં ઉમેરોA
3જો ઓપરેટર હોય, તો ઉચ્ચ પ્રાધાન્યતા હોય તો પુશ કરો+A
4ઓછી પ્રાધાન્યતાવાળા ઓપરેટર પોપ કરો+A B
5વર્તમાન ઓપરેટર પુશ કરો*A B
6એક્સપ્રેશન પૂરું થાય ત્યાં સુધી ચાલુ રાખો*A B C
7બાકીના ઓપરેટર પોપ કરોA B C * +

યાદ રાખવાની યુક્તિ: “ઓપરેટર પુશ-પોપ, ઓપરેન્ડ સીધા આઉટપુટમાં”

પ્રશ્ન 3(ક) [7 ગુણ]
#

સિંગલી લિંક્ડ લિસ્ટની શરૂઆતનો અને અંતનો નોડ ડીલીટ કરવા માટેનો પ્રોગ્રામ લખો.

જવાબ:

ડાયાગ્રામ:

BAefftoerre::HHeeaadd[[1200]][N2U0L]L[30]NULL

કોડ:

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None
    
    def deleteFirst(self):
        if self.head is None:
            return
        self.head = self.head.next
    
    def deleteLast(self):
        if self.head is None:
            return
        
        # જો માત્ર એક જ નોડ હોય
        if self.head.next is None:
            self.head = None
            return
            
        temp = self.head
        while temp.next.next:
            temp = temp.next
        
        temp.next = None

યાદ રાખવાની યુક્તિ: “પહેલો: હેડ શિફ્ટ કરો, છેલ્લો: પાછલો શોધો”

પ્રશ્ન 3(અ) OR [3 ગુણ]
#

લિંક્ડ લિસ્ટમાં કોઇ એલિમેન્ટ શોધવાની પ્રક્રિયા સમજાવો.

જવાબ:

ડાયાગ્રામ:

Head[C1h0e]ck[C2h0e]ck[C3h0e]ckNULL
સ્ટેપવર્ણન
1હેડ નોડથી શરૂ કરો
2વર્તમાન નોડના ડેટાને કી સાથે સરખાવો
3જો મેચ મળે, તો true રીટર્ન કરો
4નહીંતર, આગળના નોડ પર જાઓ અને રિપીટ કરો

યાદ રાખવાની યુક્તિ: “શરૂ કરો, ચેક કરો, આગળ વધો, દોહરાવો”

પ્રશ્ન 3(બ) OR [4 ગુણ]
#

સર્ક્યુલર લિંક્ડ લિસ્ટ નો કોન્સેપ્ટ સમજાવો.

જવાબ:

ડાયાગ્રામ:

graph LR
    A[10] --> B[20]
    B --> C[30]
    C --> A

ફીચરવર્ણન
સ્ટ્રક્ચરછેલ્લો નોડ પહેલા નોડને પોઇન્ટ કરે છે
ફાયદોNULL પોઈન્ટર્સ નથી, સર્ક્યુલર ઓપરેશન માટે કાર્યક્ષમ
ટ્રાવર્સલઅનંત લૂપ ટાળવા માટે વધારાની શરત જરૂરી

યાદ રાખવાની યુક્તિ: “છેલ્લો પહેલાને જોડે”

પ્રશ્ન 3(ક) OR [7 ગુણ]
#

લિસ્ટમાંથી બાઇનરી સર્ચનો ઉપયોગ કરીને કોઇ એક એલિમેન્ટ શોધવાનું અલગોરીધમ સમજાવો.

જવાબ:

ડાયાગ્રામ:

graph TD
    A[Start] --> B[Set Low=0, High=n-1]
    B --> C{Low <= High?}
    C -->|Yes| D[Mid = (Low+High)/2]
    D --> E{A[Mid] == Key?}
    E -->|Yes| F[Return Mid]
    E -->|No| G{A[Mid] < Key?}
    G -->|Yes| H[Low = Mid+1]
    G -->|No| I[High = Mid-1]
    H --> C
    I --> C
    C -->|No| J[Return -1]

કોડ:

def binarySearch(arr, key):
    low = 0
    high = len(arr) - 1
    
    while low <= high:
        mid = (low + high) // 2
        
        if arr[mid] == key:
            return mid
        elif arr[mid] < key:
            low = mid + 1
        else:
            high = mid - 1
            
    return -1

યાદ રાખવાની યુક્તિ: “મધ્ય, તુલના, અડધું કાઢો”

પ્રશ્ન 4(અ) [3 ગુણ]
#

લિંક્ડ લિસ્ટના ઉપયોગ લખો.

જવાબ:

લિંક્ડ લિસ્ટના ઉપયોગ
1. સ્ટેક અને ક્યુનો અમલીકરણ
2. ડાયનેમિક મેમરી એલોકેશન
3. ઇમેજ વ્યૂઅર (આગલી/પાછલી ઇમેજ)

યાદ રાખવાની યુક્તિ: “ડેટા ડાયનેમિક સ્ટોર કરો”

પ્રશ્ન 4(બ) [4 ગુણ]
#

સિંગલી અને ડબલી લિંક્ડ લિસ્ટ વચ્ચેનો તફાવત લખો.

જવાબ:

ફીચરસિંગલી લિંક્ડ લિસ્ટડબલી લિંક્ડ લિસ્ટ
નોડ સ્ટ્રક્ચરએક પોઈન્ટર (next)બે પોઈન્ટર (next, prev)
ટ્રાવર્સલમાત્ર ફોરવર્ડબંને દિશામાં
મેમરીઓછી મેમરીવધુ મેમરી
ઓપરેશનસરળ, ઓછો કોડજટિલ, વધુ ફ્લેક્સિબલ

ડાયાગ્રામ:

SDionugbllyy::[[DParteav||NDeaxtta]|Nex[tD]ata|[NPerxetv]|Dat[aD|aNteax|tN]ext][Prev|Data|Next]

યાદ રાખવાની યુક્તિ: “એક દિશા, બે દિશા”

પ્રશ્ન 4(ક) [7 ગુણ]
#

સિલેક્શન સોર્ટ અલગોરીધમનો ઉપયોગ કરીને આંકડાઓને ચઢતા ક્રમમાં ગોઠવવાનો પ્રોગ્રામ લખો.

જવાબ:

ડાયાગ્રામ:

IPPPPnaaaaisssstssssia1234l:::::[[[[[51111,,,,,33222,,,,,88833,,,,,15555,,,,,22388]]]]]((((SSSNwwwoaaapppsw538a,,,p123))))

કોડ:

def selectionSort(arr):
    n = len(arr)
    
    for i in range(n):
        min_idx = i
        
        for j in range(i+1, n):
            if arr[j] < arr[min_idx]:
                min_idx = j
        
        # મિનિમમ એલિમેન્ટને પહેલા એલિમેન્ટ સાથે સ્વેપ કરો
        arr[i], arr[min_idx] = arr[min_idx], arr[i]
    
    return arr

# ઉદાહરણ
arr = [5, 3, 8, 1, 2]
sorted_arr = selectionSort(arr)
print(sorted_arr)  # આઉટપુટ: [1, 2, 3, 5, 8]

યાદ રાખવાની યુક્તિ: “મિનિમમ શોધો, પોઝિશન બદલો”

પ્રશ્ન 4(અ) OR [3 ગુણ]
#

બબલ સોર્ટ અલગોરીધમ સમજાવો.

જવાબ:

ડાયાગ્રામ:

graph LR
    A[Pass 1] --> B[Pass 2]
    B --> C[Pass 3]
    C --> D[Pass 4]
    D --> E[Sorted]

મુખ્ય પોઈન્ટ્સ
આસપાસના એલિમેન્ટની તુલના કરો
જો ખોટા ક્રમમાં હોય તો સ્વેપ કરો
દરેક પાસમાં મોટા એલિમેન્ટ છેવટે પહોંચે

યાદ રાખવાની યુક્તિ: “મોટા બબલ ઉપર જાય”

પ્રશ્ન 4(બ) OR [4 ગુણ]
#

લિનિયર અને બાઇનરી સર્ચ વચ્ચેનો તફાવત લખો.

જવાબ:

ફીચરલિનિયર સર્ચબાઇનરી સર્ચ
કાર્ય સિદ્ધાંતક્રમિક ચકાસણીવિભાજન અને જીત
ટાઇમ કોમ્પ્લેક્સિટીO(n)O(log n)
ડેટા અરેન્જમેન્ટઅનસોર્ટેડ અથવા સોર્ટેડસોર્ટેડ હોવું જરૂરી
શેના માટે સારુંનાના ડેટાસેટમોટા ડેટાસેટ

યાદ રાખવાની યુક્તિ: “લિનિયર બધાને જુએ, બાઇનરી અડધું કાપે”

પ્રશ્ન 4(ક) OR [7 ગુણ]
#

ક્વીક સોર્ટ અને મર્જ સોર્ટ સમજાવો.

જવાબ:

ક્વીક સોર્ટ:

graph TD
    A[Quick Sort] --> B[Select Pivot]
    B --> C[Partition Around Pivot]
    C --> D[Quick Sort Left Partition]
    C --> E[Quick Sort Right Partition]

મર્જ સોર્ટ:

graph TD
    A[Merge Sort] --> B[Divide Array in Half]
    B --> C[Sort Left Half]
    B --> D[Sort Right Half]
    C --> E[Merge Sorted Halves]
    D --> E

અલગોરિધમસિદ્ધાંતસરેરાશ ટાઇમસ્પેસ કોમ્પ્લેક્સિટી
ક્વીક સોર્ટપીવોટની આસપાસ પાર્ટિશનિંગO(n log n)O(log n)
મર્જ સોર્ટવિભાજન, જીત, જોડાણO(n log n)O(n)

યાદ રાખવાની યુક્તિ: “ક્વીક વિભાજે, મર્જ જોડે”

પ્રશ્ન 5(અ) [3 ગુણ]
#

પૂર્ણ બાઇનરી ટ્રી ની વ્યાખ્યા આપો.

જવાબ:

ડાયાગ્રામ:

425163
પ્રોપર્ટીવર્ણન
બધા લેવલ ભરેલાછેલ્લા લેવલ સિવાય
છેલ્લુ લેવલ ડાબેથી ભરેલુંનોડ ડાબેથી જમણે એડ થાય

યાદ રાખવાની યુક્તિ: “ડાબેથી જમણે, લેવલ દર લેવલ ભરો”

પ્રશ્ન 5(બ) [4 ગુણ]
#

બાઇનરી ટ્રી મા ઇનઓર્ડર ટ્રાવર્સલ સમજાવો.

જવાબ:

ડાયાગ્રામ:

InDorBdeAEr:CDBEAC
સ્ટેપએક્શન
1ડાબા સબટ્રી પર ટ્રાવર્સ કરો
2રૂટ નોડની મુલાકાત લો
3જમણા સબટ્રી પર ટ્રાવર્સ કરો

કોડ:

def inorderTraversal(root):
    if root:
        inorderTraversal(root.left)
        print(root.data, end=" → ")
        inorderTraversal(root.right)

યાદ રાખવાની યુક્તિ: “ડાબું, રૂટ, જમણું”

પ્રશ્ન 5(ક) [7 ગુણ]
#

બાઇનરી સર્ચ ટ્રી મા નોડ દાખલ કરવા માટેનો પ્રોગ્રામ લખો.

જવાબ:

ડાયાગ્રામ:

graph TD
    A[50] --> B[30]
    A --> C[70]
    B --> D[20]
    B --> E[40]

    F[Insert 35] --> G[Compare with 50]
    G --> H[Go Left to 30]
    H --> I[Go Right to 40]
    I --> J[Go Left]
    J --> K[Insert 35]

કોડ:

class Node:
    def __init__(self, key):
        self.key = key
        self.left = None
        self.right = None

def insert(root, key):
    if root is None:
        return Node(key)
    
    if key < root.key:
        root.left = insert(root.left, key)
    else:
        root.right = insert(root.right, key)
        
    return root

યાદ રાખવાની યુક્તિ: “તુલના કરો, મૂવ કરો, દાખલ કરો”

પ્રશ્ન 5(અ) OR [3 ગુણ]
#

બાઇનરી સર્ચ ટ્રીની મૂળભૂત ખાસિયતો જણાવો.

જવાબ:

બાઇનરી સર્ચ ટ્રીની ખાસિયતો
1. ડાબા ચાઈલ્ડ નોડ < પેરેન્ટ નોડ
2. જમણા ચાઈલ્ડ નોડ > પેરેન્ટ નોડ
3. ડુપ્લિકેટ વેલ્યુ માન્ય નથી

યાદ રાખવાની યુક્તિ: “ડાબે ઓછું, જમણે વધુ”

પ્રશ્ન 5(બ) OR [4 ગુણ]
#

બાઇનરી ટ્રી મા પોસ્ટ ઓર્ડર ટ્રાવર્સલ સમજાવો.

જવાબ:

ડાયાગ્રામ:

PoDstBorAEdeCr:DEBCA
સ્ટેપએક્શન
1ડાબા સબટ્રી પર ટ્રાવર્સ કરો
2જમણા સબટ્રી પર ટ્રાવર્સ કરો
3રૂટ નોડની મુલાકાત લો

કોડ:

def postorderTraversal(root):
    if root:
        postorderTraversal(root.left)
        postorderTraversal(root.right)
        print(root.data, end=" → ")

યાદ રાખવાની યુક્તિ: “ડાબું, જમણું, રૂટ”

પ્રશ્ન 5(ક) OR [7 ગુણ]
#

બાઇનરી સર્ચ ટ્રી માંથી નોડ ડીલીટ કરવા માટેનો પ્રોગ્રામ લખો.

જવાબ:

ડાયાગ્રામ:

graph TD
    A[Find Node]
    A --> B{Node has 0 children?}
    B -->|Yes| C[Simply remove node]
    B -->|No| D{Node has 1 child?}
    D -->|Yes| E[Replace with child]
    D -->|No| F[Replace with inorder successor]

કોડ:

def minValueNode(node):
    current = node
    while current.left is not None:
        current = current.left
    return current

def deleteNode(root, key):
    if root is None:
        return root
        
    if key < root.key:
        root.left = deleteNode(root.left, key)
    elif key > root.key:
        root.right = deleteNode(root.right, key)
    else:
        # એક અથવા કોઈ ચાઈલ્ડ નથી
        if root.left is None:
            return root.right
        elif root.right is None:
            return root.left
            
        # બે ચાઈલ્ડ
        successor = minValueNode(root.right)
        root.key = successor.key
        root.right = deleteNode(root.right, successor.key)
        
    return root

યાદ રાખવાની યુક્તિ: “શોધો, બદલો, ફરી જોડો”

સંબંધિત

ડેટા સ્ટ્રક્ચર અને એપ્લિકેશન (1333203) - વિન્ટર 2023 સોલ્યુશન
24 મિનિટ
અભ્યાસ-સામગ્રી સોલ્યુશન ડેટા-સ્ટ્રક્ચર 1333203 2023 વિન્ટર
એમ્બેડેડ સિસ્ટમ (4343204) - વિન્ટર 2024 સોલ્યુશન
25 મિનિટ
અભ્યાસ-સામગ્રી સોલ્યુશન એમ્બેડેડ-સિસ્ટમ 4343204 2024 વિન્ટર
સાયબર સિક્યુરિટી (4353204) - વિન્ટર 2024 શોર્ટ સોલ્યુશન
11 મિનિટ
અભ્યાસ-સામગ્રી સોલ્યુશન સાયબર-સિક્યુરિટી 4353204 2024 વિન્ટર
એમ્બેડેડ સિસ્ટમ (4343204) - સમર 2024 સોલ્યુશન
17 મિનિટ
અભ્યાસ-સામગ્રી સોલ્યુશન એમ્બેડેડ-સિસ્ટમ 4343204 2024 સમર
કન્ઝ્યુમર ઇલેક્ટ્રોનિક્સ એન્ડ મેઇન્ટેનન્સ (4341107) - સમર 2024 સોલ્યુશન
17 મિનિટ
અભ્યાસ-સામગ્રી સોલ્યુશન કન્ઝ્યુમર-ઇલેક્ટ્રોનિક્સ 4341107 2024 સમર
લીનીયર ઈન્ટીગ્રેટેડ સર્કિટ (4341105) - વિન્ટર 2024 સોલ્યુશન
29 મિનિટ
અભ્યાસ-સામગ્રી સોલ્યુશન્સ લીનીયર-ઈન્ટીગ્રેટેડ-સર્કિટ 4341105 2024 વિન્ટર