如上所示,由正整數1,2,3……組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n = 12,m = 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹中共有4個結點。
輸入資料報括多行,每行給出一組測試資料,包括兩個整數m,n (1 <= m <= n <= 1000000000)。
對於每一組測試資料,輸出一行,該行包含乙個整數,給出結點m所在子樹中包括的結點的數目。
示例1
3 12
0 0
常規的思維題,不用想那麼難第一次使用二叉樹,二叉樹的建立有三種方法
用指標實現//node
用陣列實現
用vector實現//每個vector儲存容器存放和它有關的二叉樹往往和dfs和bfs有關
#include
using
namespace std;
intfun
(int m,
int n)
//因為當m大於n時,已經超過了二叉樹的範圍
else
}int
main()
return0;
}
重建二叉樹(牛客網)
從前序遍歷和中序遍歷重建乙個二叉樹。步驟如下 1 根據前序遍歷的第乙個元素建立根節點 2 在中序遍歷找到這個元素,左邊的元素都是根節點的左子樹的結點,右邊的元素都是右子樹的結點 3 在前序遍歷中找到屬於左右子樹的前序序列 4 左子樹重複123 5 右子樹重複123 6 返回根節點 例如前序遍歷序列和...
牛客網 對稱二叉樹(遞迴)
一棵有點權的有根樹如果滿足以下條件,則被軒軒稱為對稱二叉樹 1.二叉樹 2.將這棵樹所有節點的左右子樹交換,新樹和原樹對應位置的結構相同且點權相等。下圖中節點內的數字為權值,節點外的 id 表示節點編號。現在給出一棵二叉樹,希望你找出它的一棵子樹,該子樹為對稱二叉樹,且節點數 最多。請輸出這棵子樹的...
重建二叉樹 牛客
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。首先講一下對二叉樹幾種遍歷的記憶理解方法,主要是結點的序列位置不同。根據前序遍歷的特點,樹的根結點一定在第一位 中序遍歷的特點,根結...