給定一棵二叉樹,求出現次數最多的子樹和。子樹和:包含當前節點和其所有子節點的和。
分析:用遞迴的方法,把每個節點的子樹和與出現的頻率求出來存入hashmap中(和為key,頻率為value),對hashmap中的所有數值對進行遍歷,如果存在頻率更高的,則清空list,並加入當前sum,如果頻率一樣就加入list。
public int findfrequenttreesum(treenode root)
}int result = new int[list.size()];
for(int i = 0; i < list.size(); i++)
return result;
}public int sum(treenode root, hashmapmap)
二叉樹和最大的子樹
問題描述 給乙個二叉樹,每個節點都是正或負整數,如何找到乙個子樹,它所有節點的和最大?思路 採用自底向上的計算。先計算左右子樹總和值,用左右子樹的總和加上當前節點值,如果當前總和大於最大值,則更新最大值,同時將最大子樹根節點更新為當前根。簡單說,就是後序遍歷。cpp view plain copy ...
二叉樹子樹的刪除
package 二叉樹子樹的刪除 public class binarytree public treenode getroot 前序 public void frontshow else 中序 public void midshow else 後序 public void aftershow el...
二叉樹的子樹和子結構
子樹 是只要包含了乙個結點,就得包含這個結點下的所有節點。子結構 包含了乙個結點,可以只取左子樹或者右子樹,或者都不取。判斷乙個二叉樹是不是另乙個二叉樹子樹的 實現如下 class solution private bool issubtree treenode r1,treenode r2 ret...