找到二叉樹中符合搜尋二叉樹條件的最大拓撲結構
給定一棵二叉樹的頭節點 head,已知所有節點的值都不一樣,返回其中最大的、且符合搜尋二叉樹
條件的拓撲結構的節點數。這裡的拓撲結構是指,你可以在二叉樹中任意選擇某些節點,只要這些節 點是連在一起的,都叫做二叉樹的拓撲結構。
public static class node
}public static int bsttoposize1(node head)
int max = maxtopo(head, head);
max = math.max(bsttoposize1(head.left), max);
max = math.max(bsttoposize1(head.right), max);
return max;
}public static int maxtopo(node h, node n)
return 0;
}public static boolean isbstnode(node h, node n, int value)
if(h == n)
return isbstnode(h.value > h.left : h.right, n, value);
}public static class record
}public static int bsttoposize2(node head)
public static int posorder(node h, mapmap)
int ls = posorder(h.left, map);
int rs = posorder(h.right, map);
modifymap(h.left, h.value, map, true);
modifymap(h.right, h.value, map, false);
record lr = map.get(h.left);
record rr = map.get(h.right);
int lbst = lr = null ? 0 : lr.l + lr.r + 1;
int rbst = rr = null ? 0 : rr.l + rr.r + 1;
map.put(h, new record(lbst, rbst));
return math.max(lbst + rbst + 1, math.max(ls, rs));
}public static int modifymap(node n, int v, mapm, boolean s)
record r = m.get(n);
if((s && n.value > v) || ((!s) && n.value < v))elseelse
m.put(n, r);
return minus;
}}
找到二叉樹中的最大搜尋二叉樹
題目 給定一顆二叉樹,已知其中所有節點的值都不一樣,找到含有節點最多的二叉搜尋樹,並返回頭節點。注 乙個二叉樹的子樹的葉節點必須是該二叉樹的葉節點。解答 1.後續遍歷 2.每次記錄下最小值,最大值,節總數。如果root左右節點符合,則總數相加後,返回此根節點 否則返回左右節點中節點數最多的節點。輸入...
二叉樹 還原二叉樹 二叉搜尋樹
先序遍歷的特點 先遍歷根結點,再遍歷左子樹,最後再遍歷右子樹 中序遍歷的特點 先遍歷左子樹,再遍歷根結點,最後再遍歷右子樹 後序遍歷的特點 先遍歷左子樹,再遍歷右子樹,最後再遍歷根結點 舉例 先序遍歷 a b d f g h i e c 中序遍歷 f d h g i b e a c 如上,根據先序遍...
排序二叉樹or搜尋二叉樹or查詢二叉樹
排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...