給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。
如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。
遞迴解法
/**
* 遞迴解法
** @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為單位進行跳躍式的替換,每個元素都會...