戳這裡檢視
由於這是乙個無限大的完全二叉樹,所以不合法的方案僅存在於跳到根節點的父親這一種,且由於指令會無限重複,所以我們必須保證指令會使得離開被標記的子樹的時候,所有被標記的點已經全部訪問完,因為我們不會折返回去向上跳的
那麼我們考慮列舉它是經過哪條路徑,從哪個點離開整顆子樹的,只要保證在走這條路經的同時遍歷完所有的點,且由於指令會無限重複,所以我們對於路徑上每乙個點,將所有的子樹求乙個形態上的並集,只要使得整個並集能被訪問,那麼所有的點都會被訪問到,最後的答案就是\((cnt-1)*2-dep\),其中\(cnt\)是並集的樹上節點數,\(dep\)為我們列舉的離開的點的深度
#includeusing namespace std;
namespace zzc
f[maxn],g[maxn];
void build(int &x)
void merge(int &x,int y)
void solve(int u,int dep)
merge(rt=1,t);
}ans=min(ans,(cnt-1)*2-dep);
} pth[dep]='l';
if(f[u].lc) solve(f[u].lc,dep+1);
pth[dep]='r';
if(f[u].rc) solve(f[u].rc,dep+1); }
void work() }
int main()
二叉樹(簡單思維題)
如上圖所示,由正整數1,2,3 組成了一顆二叉樹。我們已知這個二樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點 都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹中共有4個結...
劍指offer python 第4題 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。用遞迴思想 前序遍歷是,中序遍歷是,可以知道1是根節點,則在中序遍歷中,4,7,2都是1的左子樹,5,3,8,6都是1的右子樹 從前...
樹形結構 思維 對稱二叉樹(洛谷 P5018)
題目描述 一棵有點權的有根樹如果滿足以下條件,則被軒軒稱為對稱二叉樹 二叉樹 將這棵樹所有節點的左右子樹交換,新樹和原樹對應位置的結構相同且點權相等。現在給出一棵二叉樹,希望你找出它的一棵子樹,該子樹為對稱二叉樹,且節點數 最多。請輸出這棵子樹的節點數。注意 只有樹根的樹也是對稱二叉樹。本題中約定,...