0Pricing
TypeScript Academy · Ders

Ağaç Yapılarının Türünü Belirleme

İç içe ağaç düğümlerini özyinelemeli türlerle modelleyin.

Ağaç Yapılarının Türünü Belirleme, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.

Ağaç Düğümü Türü

Ağaçlar listeleri genelleştirir: her düğüm bir değer ve aynı türdeki child düğümlerinden oluşan bir dizi içerir. Bu, children dizisine sahip özyinelemeli bir türdür.

type TreeNode<T> = {
  value: T;
  children: TreeNode<T>[];
};
const leaf: TreeNode<number> = { value: 1, children: [] };
console.log(leaf.value);

Küçük Bir Ağaç Oluşturmak

Child düğümleri olan bir düğüm, yalnızca iç içe nesnelerden oluşur. Boş dizi, bir leaf için doğal temel durumdur.

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);

Daha Derine İç İçe Yerleştirmek

Her child kendisi tam bir TreeNode olduğu için child düğümlerinin her derinlikte kendi child düğümleri olabilir.

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);

Tüm Değerleri Toplamak

Özyinelemeli bir işlev her düğümü ziyaret eder ve child düğümlerine özyinelemeli olarak girerek bir sonuç biriktirir; bu, derinlik öncelikli bir geçiştir.

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));

Düğümleri Saymak

Aynı geçiş biçimi düğümleri de sayar: geçerli düğüm için bir, tüm alt ağaçların sayıları kadar da ek değer.

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));

Maksimum Derinliği Bulma

Derinlik, çocuklar arasındaki maksimum derinliğin bir fazlasıdır; çocuğu olmayan bir yaprak için derinlik birdir.

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));

Tüm Değerleri Toplama

Geçerli değeri düzleştirilmiş çocuklarla birleştirerek ağacı bir diziye düzleştirin.

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));

Ağaçta Arama

Özyinelemeli bir arama, koşula uyan ilk düğümü döndürür; geçerli düğüm uymuyorsa çocukları inceler.

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);

Ağacı Eşleme

Değeri ve çocukları özyinelemeli olarak eşleyerek yapıyı korurken her değeri dönüştürün.

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);

Ağaçlar Gerçek Verileri Modeller

Dosya sistemleri, DOM ağaçları, kuruluş şemaları ve AST'lerin tümü ağaçtır. Tek bir özyinelemeli tür, tam tür güvenliğiyle bunların tümünü ifade eder.

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);

Yapraklar ve Dallar

Bir düğüm, yaprak olduğunda children boştur; diğer durumlarda bir daldır. Bu ayrım çoğu zaman gezinme mantığını belirler.

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: [] }));

Hızlı Kontrol: Ağaç Yapıları

Ağaç yapılarını türlendirme konusundaki anlayışınızı sınayın.

Özet: Ağaç Yapılarını Türlendirme

Ağaçları, her düğümün bir değeri ve alt düğümlerden oluşan bir dizisi olan TreeNode<T> ile modellediniz; ardından bunlar üzerinde toplama, sayma, arama ve eşleme yapan özyinelemeli işlevler yazdınız.

type TreeNode<T> = { value: T; children: TreeNode<T>[] };
const t: TreeNode<number> = { value: 1, children: [{ value: 2, children: [] }] };
console.log(t.children[0].value);

Sıkça Sorulan Sorular

“Ağaç Yapılarının Türünü Belirleme” dersi ücretsiz mi?

Evet — “Ağaç Yapılarının Türünü Belirleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.

“Ağaç Yapılarının Türünü Belirleme” dersinde ne öğreneceğim?

İç içe ağaç düğümlerini özyinelemeli türlerle modelleyin. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Ağaç Yapılarının Türünü Belirleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Özyinelemeli Tür Tanımları
  2. Ağaç Yapılarının Türünü Belirleme
  3. JSON Değer Türleri
  4. Özyineleme Derinliği ve Sınırları
← TypeScript Academy Sayfasına Dön