相同的樹 四種解法

2021-10-03 03:53:43 字數 1375 閱讀 9140

給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。

如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。

遞迴解法

/**

* 遞迴解法

** @param p

* @param q

* @return

*/public boolean issametree(treenode p, treenode q) else

}

非遞迴前序遍歷

/**

* 非遞迴前序遍歷判斷相等

* 根左右

** @param p

* @param q

* @return

*/public boolean issametreepre(treenode p, treenode q) else

}return true;

}

二叉樹後序遍歷判斷:

/**

* 二叉樹後序遍歷判斷兩顆樹相等

* 左右根

* 雙棧解法

** @param p

* @param q

* @return

*/public boolean issametreeend1(treenode p, treenode q) else if (p == null && q == null) else

}while (!stackp.isempty() && !stackq.isempty())

}return true;

}

二叉樹後序遍歷單棧實現對比判斷:

/**

* 二叉樹後序遍歷單棧實現對比判斷

** @param p

* @param q

* @return

*/public boolean issametreeend2(treenode p, treenode q)

ppre = p;

qpre = q;

stackp.pop();

stackq.pop();

} else else if (p.right != null || q.right != null)

if (p.left != null && q.left != null) else if (p.left != null || q.left != null) }}

return true;

}

農夫過河的四種解法

題目描述 有乙個農夫,帶著乙隻狼 乙隻羊 一顆白菜過河。其中農夫不在的時候狼會吃羊,羊會吃白菜。只有乙隻船,且每次農夫最多只能帶一樣物品過河。求解決方案。思路 1.過程回溯法。把人 狼 羊 白菜看成a b c d。過河的時候從abcd中選兩個過河,在 選乙個回來。若發生狼跟羊 羊跟白菜在同乙個岸邊,...

最短路徑四種解法

在學習 圖 的時候,遇到過一道經典的題 最短路徑。最短路徑有四種最經典的解法。廢話不多說,直接上 floyd warshall include using namespace std const int m 999999 int n,m,p1,p2,l int map 1000 1000 intma...

旋轉陣列的四種解法

示例 輸入 1,2,3,4,5,6,7 和 k 3 輸出 5,6,7,1,2,3,4 解釋 向右旋轉 1 步 7,1,2,3,4,5,6 向右旋轉 2 步 6,7,1,2,3,4,5 向右旋轉 3 步 5,6,7,1,2,3,4 環狀替換法,即從起點開始,每次以k為單位進行跳躍式的替換,每個元素都會...