ट्री संरचनाओं के प्रकार निर्धारित करना
पुनरावर्ती प्रकारों के साथ नेस्टेड ट्री नोड का मॉडल बनाएँ।
ट्री संरचनाओं के प्रकार निर्धारित करना, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
ट्री नोड का टाइप
ट्री, सूचियों का सामान्य रूप हैं: हर नोड में एक मान और उसी टाइप के चाइल्ड नोड का एक ऐरे होता है। यह children ऐरे वाला रिकर्सिव टाइप है।
type TreeNode<T> = {
value: T;
children: TreeNode<T>[];
};
const leaf: TreeNode<number> = { value: 1, children: [] };
console.log(leaf.value);एक छोटा ट्री बनाना
चाइल्ड वाले नोड का अर्थ केवल नेस्ट किए गए ऑब्जेक्ट हैं। खाली ऐरे leaf के लिए स्वाभाविक आधार स्थिति है।
type TreeNode<T> = { value: T; children: TreeNode<T>[] };
const tree: TreeNode<string> = {
value: "root",
children: [
{ value: "a", children: [] },
{ value: "b", children: [] }
]
};
console.log(tree.children.length);अधिक गहराई तक नेस्ट करना
चाइल्ड की अपनी संतति किसी भी गहराई तक हो सकती है, क्योंकि हर चाइल्ड स्वयं एक पूर्ण TreeNode है।
type TreeNode<T> = { value: T; children: TreeNode<T>[] };
const tree: TreeNode<number> = {
value: 1,
children: [
{ value: 2, children: [{ value: 4, children: [] }] },
{ value: 3, children: [] }
]
};
console.log(tree.children[0].children[0].value);सभी मानों का योग निकालना
एक रिकर्सिव फ़ंक्शन हर नोड पर जाता है और उसकी संतति में रिकर्शन करता है, परिणाम संचित करते हुए; यह गहराई-प्रथम भ्रमण है।
type TreeNode<T> = { value: T; children: TreeNode<T>[] };
function sum(node: TreeNode<number>): number {
let total = node.value;
for (const child of node.children) total += sum(child);
return total;
}
const t: TreeNode<number> = { value: 1, children: [{ value: 2, children: [] }, { value: 3, children: [] }] };
console.log(sum(t));नोड की गिनती करना
इसी भ्रमण संरचना से नोड की गिनती भी की जा सकती है: वर्तमान नोड के लिए एक, और सभी उपट्री की गिनतियाँ।
type TreeNode<T> = { value: T; children: TreeNode<T>[] };
function count<T>(node: TreeNode<T>): number {
return 1 + node.children.reduce((acc, c) => acc + count(c), 0);
}
const t: TreeNode<string> = { value: "r", children: [{ value: "a", children: [] }] };
console.log(count(t));अधिकतम गहराई ढूँढना
गहराई, संतानों की अधिकतम गहराई से एक अधिक होती है; जिन पत्तियों की कोई संतान नहीं होती, उनकी गहराई एक होती है।
type TreeNode<T> = { value: T; children: TreeNode<T>[] };
function depth<T>(node: TreeNode<T>): number {
if (node.children.length === 0) return 1;
return 1 + Math.max(...node.children.map(depth));
}
const t: TreeNode<number> = { value: 1, children: [{ value: 2, children: [{ value: 3, children: [] }] }] };
console.log(depth(t));सभी मान एकत्र करना
वर्तमान मान को पुनरावर्ती रूप से समतल की गई संतानों के साथ जोड़कर ट्री को एक ऐरे में बदलें।
type TreeNode<T> = { value: T; children: TreeNode<T>[] };
function flatten<T>(node: TreeNode<T>): T[] {
return [node.value, ...node.children.flatMap(flatten)];
}
const t: TreeNode<number> = { value: 1, children: [{ value: 2, children: [] }, { value: 3, children: [] }] };
console.log(flatten(t));ट्री में खोज
पुनरावर्ती खोज उस पहली नोड को लौटाती है जो किसी परीक्षण-शर्त से मेल खाती है; यदि वर्तमान नोड मेल नहीं खाती, तो यह संतानों में खोज करती है।
type TreeNode<T> = { value: T; children: TreeNode<T>[] };
function find<T>(node: TreeNode<T>, pred: (v: T) => boolean): TreeNode<T> | null {
if (pred(node.value)) return node;
for (const c of node.children) {
const hit = find(c, pred);
if (hit) return hit;
}
return null;
}
const t: TreeNode<number> = { value: 1, children: [{ value: 5, children: [] }] };
console.log(find(t, v => v === 5)?.value);ट्री का रूपांतरण
संरचना बनाए रखते हुए हर मान को रूपांतरित करें; इसके लिए मान और संतानों पर पुनरावर्ती रूप से मैपिंग करें।
type TreeNode<T> = { value: T; children: TreeNode<T>[] };
function mapTree<T, U>(node: TreeNode<T>, fn: (v: T) => U): TreeNode<U> {
return { value: fn(node.value), children: node.children.map(c => mapTree(c, fn)) };
}
const t: TreeNode<number> = { value: 1, children: [{ value: 2, children: [] }] };
console.log(mapTree(t, x => x * 100).value);ट्री वास्तविक डेटा का मॉडल बनाते हैं
फ़ाइल प्रणालियाँ, DOM ट्री, संगठनात्मक आरेख और एएसटी सभी ट्री होते हैं। एक ही पुनरावर्ती प्रकार, पूर्ण प्रकार-सुरक्षा के साथ, इन सभी का वर्णन कर सकता है।
type TreeNode<T> = { value: T; children: TreeNode<T>[] };
type FileTree = TreeNode<string>;
const fs: FileTree = { value: "/", children: [{ value: "home", children: [] }] };
console.log(fs.value, fs.children[0].value);पत्तियाँ और शाखाएँ
जब पत्ती की children खाली होती है, तब नोड एक पत्ती होती है; अन्यथा वह एक शाखा होती है। यह अंतर अक्सर भ्रमण-तर्क को निर्धारित करता है।
type TreeNode<T> = { value: T; children: TreeNode<T>[] };
function isLeaf<T>(node: TreeNode<T>): boolean {
return node.children.length === 0;
}
console.log(isLeaf({ value: 1, children: [] }));त्वरित जाँच: ट्री संरचनाएँ
ट्री संरचनाओं के प्रकार-निर्धारण की अपनी समझ जाँचें।
पुनरावलोकन: ट्री संरचनाओं का प्रकार-निर्धारण
आपने TreeNode<T> की सहायता से ट्री का मॉडल बनाया, जिसमें हर नोड का एक मान और चाइल्ड नोड्स का एक ऐरे होता है। फिर आपने उन पर योग, गिनती, खोज और मैपिंग करने वाले पुनरावर्ती फ़ंक्शन लिखे।
type TreeNode<T> = { value: T; children: TreeNode<T>[] };
const t: TreeNode<number> = { value: 1, children: [{ value: 2, children: [] }] };
console.log(t.children[0].value);एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 101
- पाठ
- 352
अक्सर पूछे जाने वाले प्रश्न
क्या “ट्री संरचनाओं के प्रकार निर्धारित करना” पाठ निःशुल्क है?
हाँ—“ट्री संरचनाओं के प्रकार निर्धारित करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और TypeScript Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“ट्री संरचनाओं के प्रकार निर्धारित करना” में मैं क्या सीखूँगा?
पुनरावर्ती प्रकारों के साथ नेस्टेड ट्री नोड का मॉडल बनाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ TypeScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या TypeScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर TypeScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“ट्री संरचनाओं के प्रकार निर्धारित करना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस TypeScript Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर TypeScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- पुनरावर्ती प्रकार परिभाषाएँ
- ट्री संरचनाओं के प्रकार निर्धारित करना
- JSON मान प्रकार
- पुनरावृत्ति की गहराई और सीमाएँ