بالنظر إلى شجرة ثنائية ، ابحث عن المسار الذي يتساوي فيه مجموع كل عقدة في جميع المسارات القيمة المستهدفة المحددة.
يشير المسار الصحيح إلى المسار من عقدة الجذر إلى عقدة الورقة.
عينة
بالنظر إلى شجرة ثنائية ، والقيمة المستهدفة = 5:
1 / / 2 4 / / 2 3
يعود:
[[1 ، 2 ، 2] ، [1 ، 4]]
الرمز كما يلي:
/** * تعريف treenode: * فئة عامة treenode { * public int val ؛ * treenode public اليسار ، اليمين ؛ * public treenode (int val) { * this.val = val ؛ * this.left = this.right = null ؛ *} *} */حلول الفئة العامة {/** * param جذر الجذر من شجرة ثنائية * param الهدف integer * return جميع المسارات الصالحة */قائمة عامة <list <Integer >> binarytreepathsum (treenode root ، int target) {// اكتب رمزك herereturn (الجذر ، الجذر الجديد <integer> ، ArrayList <list <integer> () ، target) ؛} القائمة العامة <list <integer>> dfs (treeNode root ، list <integer> node ، int sum ، list <list <integer >> paths ، int target) {if (rout == null) {return new arraylist <integer> ArrayList <list <integer >> () ؛ if (root.left! = null) {list <integer> nodes = new ArrayList <integer> () ؛ if (node! = null) {nodes.addall (node) ؛ temp = dfs (root.left ، nodes ، sum+root.val ، المسارات ، الهدف) ؛ if (temp! = null) {path.addall (temp) ؛}} if (root.right! = null) {list <integer> nodes = new ArrayList <integer> () ؛ if (node! = null) {nodes.addall (node) ؛} nodes.add (root.val) ؛ list <list <integer >> temp = dfs (root.right ، nodes ، sum+root.val ، paths ، target) ؛ if (temp! = null) {path.addall (temp) ؛ العقد = new ArrayList <integer> () ؛ if (node! = null) {newes.addall (node) ؛} nodes.add (root.val) ؛ if (sum+root.val == target) {path.add (nodes) ؛مرجع
تحليل الكود لمشكلة العثور على أقصى مسار للشجرة الثنائية في برمجة Java
تحليل رمز اختبار الميراث في جافا
لخص
ما سبق هو كل شيء عن مسارات شجرة Java الثنائية وأمثلة رمز في هذه المقالة ، وآمل أن تكون مفيدة للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!