


Gunakan C++ untuk memadam semua nod yang tidak berada di mana-mana laluan dan jumlah laluan adalah kurang daripada k
Dalam masalah ini, kami mempunyai pokok binari yang laluannya dari nod akar ke nod daun ditakrifkan sepenuhnya. Jumlah semua nod dari nod akar ke nod daun mestilah lebih besar daripada atau sama dengan k. Jadi kita perlu memadam semua nod dalam laluan yang jumlahnya kurang daripada k. Perkara penting yang perlu diingat di sini ialah nod mungkin sebahagian daripada banyak laluan, jadi nod tersebut hanya dialih keluar jika jumlah semua laluan
Dari nod akar ke nod daun, kita boleh mengira jumlahnya. Apabila panggilan rekursif ke nod selesai dan kawalan kembali, kita boleh menyemak sama ada jumlah laluan kiri dan kanan
Katakan kita mempunyai 150 K dan pokok seperti ini -
10 / \ 20 30 / \ / \ 5 35 40 45 / \ / \ 50 55 60 65 / \ / / 70 80 90 100
Jika kita lihat jumlah akar laluan->kiri->kiri ialah 10 + 20 + 5 iaitu 25 iaitu kurang daripada 150 kita perlu memangkasnya dan memadam 5. Selepas itu, mari kita nilai 10->30->40. Ia kurang daripada 150, jadi padamkan 40. Sekarang kita melihat laluan lain 10->20->35->50, jumlah 115 adalah kurang daripada 150, jadi kita padamkan 50. Sekarang laluan kami yang tinggal ialah
10->20->35->55->70 ; 10->20->35->55->80 ; 10->30->45->60->90 ; 10->30->45->65->100 ;
Jumlah semua laluan lebih besar daripada 150, jadi kami tidak perlu memangkas lagi.
Contoh
#include <iostream> using namespace std; class Node { public: int value; Node *left, *right; Node(int value) { this->value = value; left = right = NULL; } }; Node* removeNodesWithPathSumLessThanK(Node* root, int k, int& sum) { if(root == NULL) return NULL; int leftSum, rightSum; leftSum = rightSum = sum + root->value; root->left = removeNodesWithPathSumLessThanK(root->left, k, leftSum); root->right = removeNodesWithPathSumLessThanK(root->right, k, rightSum); sum = max(leftSum, rightSum); if(sum < k) { free(root); root = NULL; } return root; } void printInorderTree(Node* root) { if(root) { printInorderTree(root->left); cout << root->value << " "; printInorderTree(root->right); } } int main() { int k = 150; Node* root = new Node(10); root->left = new Node(20); root->right = new Node(30); root->left->left = new Node(5); root->left->right = new Node(35); root->right->left = new Node(40); root->right->right = new Node(45); root->left->right->left = new Node(50); root->left->right->right = new Node(55); root->right->right->left = new Node(60); root->right->right->right = new Node(65); root->left->right->right->left = new Node(70); root->left->right->right->right = new Node(80); root->right->right->left->left = new Node(90); root->right->right->right->left = new Node(100); int sum = 0; cout << "Inorder tree before: "; printInorderTree(root); root = removeNodesWithPathSumLessThanK(root, k, sum); cout << "\nInorder tree after: "; printInorderTree(root); return 0; }
Output
Inorder tree before: 5 20 50 35 70 55 80 10 40 30 90 60 45 100 65 Inorder tree after: 20 35 70 55 80 10 30 90 60 45 100 65
Pokok kami yang dipangkas sepenuhnya -
10 / \ 20 30 \ \ 35 45 \ / \ 55 60 65 / \ / / 70 80 90 100
Kesimpulan
Seperti yang dapat kita lihat, selepas pemerhatian awal, kita boleh menggunakan DFS dan lulus fungsi rekursif semasa ia mengembalikan jumlah panggilan daripada setiap nod ini untuk mengeluarkan nod. Secara keseluruhannya, ini adalah pemerhatian dan metodologi yang mudah.
Atas ialah kandungan terperinci Gunakan C++ untuk memadam semua nod yang tidak berada di mana-mana laluan dan jumlah laluan adalah kurang daripada k. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Windows 11 mempunyai begitu banyak pilihan penyesuaian, termasuk pelbagai tema dan kertas dinding. Walaupun tema ini adalah estetik dengan cara mereka sendiri, sesetengah pengguna masih tertanya-tanya di mana mereka berada di latar belakang pada Windows 11. Panduan ini akan menunjukkan kepada anda cara berbeza untuk mengakses lokasi tema Windows 11 anda. Apakah tema lalai Windows 11? Latar belakang tema lalai Windows 11 ialah bunga biru diraja abstrak yang mekar dengan latar belakang biru langit. Latar belakang ini adalah salah satu yang paling popular, terima kasih kepada jangkaan sebelum keluaran sistem pengendalian. Walau bagaimanapun, sistem pengendalian juga dilengkapi dengan pelbagai latar belakang lain. Oleh itu, anda boleh menukar latar belakang tema desktop Windows 11 pada bila-bila masa. Tema disimpan dalam Windo

Laluan fail ialah rentetan yang digunakan oleh sistem pengendalian untuk mengenal pasti dan mencari fail atau folder. Dalam laluan fail, terdapat dua simbol biasa yang memisahkan laluan, iaitu garis miring ke hadapan (/) dan garis miring ke belakang (). Kedua-dua simbol ini mempunyai kegunaan dan makna yang berbeza dalam sistem pengendalian yang berbeza. Garis miring ke hadapan (/) ialah pemisah laluan yang biasa digunakan dalam sistem Unix dan Linux. Pada sistem ini, laluan fail bermula dari direktori akar (/) dan dipisahkan oleh garis miring ke hadapan antara setiap direktori. Sebagai contoh, laluan /home/user/Docume

Video ini tidak boleh dimainkan kerana ralat teknikal. (Kod Ralat: 102006) Panduan ini menyediakan pembetulan mudah untuk masalah biasa ini dan meneruskan perjalanan pengekodan anda. Kami juga akan membincangkan punca ralat Java dan cara mencegahnya pada masa hadapan. Apakah "Ralat: Kelas utama tidak dijumpai atau dimuatkan" dalam Java? Java ialah bahasa pengaturcaraan yang berkuasa yang membolehkan pembangun mencipta pelbagai aplikasi. Walau bagaimanapun, fleksibiliti dan kecekapannya datang dengan pelbagai kesilapan biasa yang boleh berlaku semasa pembangunan. Salah satu gangguan ialah Ralat: User_jvm_args.txt kelas utama tidak ditemui atau dimuatkan, yang berlaku apabila Mesin Maya Java (JVM) tidak dapat mencari kelas utama untuk melaksanakan program. Ralat ini bertindak sebagai penghalang jalan walaupun dalam

Apakah perbezaan dalam laluan "Komputer Saya" dalam Win11? Cara cepat untuk mencarinya! Memandangkan sistem Windows sentiasa dikemas kini, sistem Windows 11 terkini turut membawakan beberapa perubahan dan fungsi baharu. Salah satu masalah biasa ialah pengguna tidak dapat mencari laluan ke "Komputer Saya" dalam sistem Win11 Ini biasanya merupakan operasi mudah dalam sistem Windows sebelumnya. Artikel ini akan memperkenalkan cara laluan "Komputer Saya" berbeza dalam sistem Win11, dan cara mencarinya dengan cepat. Dalam Windows1

Gunakan fungsi path/filepath.Dir untuk mendapatkan bahagian direktori laluan fail Dalam proses pembangunan harian kami, pemprosesan laluan fail sering terlibat. Kadangkala, kita perlu mendapatkan bahagian direktori laluan fail, iaitu laluan ke folder di mana fail itu terletak. Dalam bahasa Go, anda boleh menggunakan fungsi Dir yang disediakan oleh pakej path/filepath untuk melaksanakan fungsi ini. Tandatangan fungsi Dir adalah seperti berikut: funcDir(pathstring)string Fungsi Dir menerima perkataan

Kernel Linux ialah kernel sistem pengendalian sumber terbuka yang kod sumbernya disimpan dalam repositori kod khusus. Dalam artikel ini, kami akan menganalisis laluan penyimpanan kod sumber kernel Linux secara terperinci dan menggunakan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik. 1. Laluan penyimpanan kod sumber kernel Linux Kod sumber kernel Linux disimpan dalam repositori Git yang dipanggil linux, yang dihoskan di [https://github.com/torvalds/linux](http

Dalam pokok, istilah "jumlah laluan terpendek bagi semua pasangan nod" merujuk kepada pengiraan jumlah laluan terpendek individu bagi semua pasangan nod. Kaedah yang berkesan ialah menggunakan algoritma dwi DFS (depth first search). Jarak antara nod yang dipilih dan setiap nod lain ditentukan semasa pas DFS pertama. Pokok itu dilalui semula semasa pas DFS kedua, dengan mengambil kira setiap nod sebagai potensi LCA (nenek moyang paling rendah) dan mengira jumlah jarak antara pasangan nod keturunan LCA yang dipilih. Menggunakan kaedah ini, anda boleh mengira jumlah laluan terpendek untuk semua pasangan nod dalam pepohon dan memastikan penyelesaian yang ideal Kaedah yang digunakan kaedah DFS DFS (Depth First Search) Kaedah pengaturcaraan dinamik Kaedah DFS (Depth First Search) untuk pokok. Semua pasangan laluan terpendek

Cara menggunakan modul os.path dalam Python3.x untuk mendapatkan pelbagai bahagian laluan fail Dalam pengaturcaraan Python harian, kita selalunya perlu beroperasi pada laluan fail, seperti mendapatkan nama fail, direktori fail, sambungan, dsb. daripada laluan itu. Dalam Python, anda boleh menggunakan modul os.path untuk melaksanakan operasi ini. Artikel ini akan memperkenalkan cara menggunakan modul os.path untuk mendapatkan pelbagai bahagian laluan fail untuk manipulasi fail yang lebih baik. Modul os.path menyediakan satu siri
