1. 程式人生 > >名企演算法題目總結(4)

名企演算法題目總結(4)

1.二叉樹的遞迴非遞迴遍歷

 考慮一個完全二叉樹 1234567,

 先序非遞迴,列印1,處理2,處理3  直接迴圈配合一個棧和hashtable,hashtable儲存節點的處理方式(列印為false,處理為true);

       push(3),hashtable[3]=true;

       push(2),hashtable[2]=true;

       push(1),hashtable[1]=false;

 中序非遞迴,處理2 ,列印1,處理3 ,直接迴圈配合一個棧和hashtable,hashtable儲存節點的處理方式(列印為false,處理為true)

     push(3),hashtable[3]=true;

     push(1),hashtable[1]=false;

       push(2),hashtable[2]=true;

 後序非遞迴,處理2,處理3,列印1,直接迴圈配合一個棧和hashtable,hashtable儲存節點的處理方式(列印為false,處理為true)

      push(1),hashtable[1]=false;

      push(3),hashtable[3]=true;

      push(2),hashtable[2]=true;

面試手擼3種非遞迴,不準備,臨時自己想,能寫得又快又好,要麼是大神,要麼是記憶裡驚人的(很容易忘記的,哎),菜雞琢磨了半天,終於找到適合自己的路子

 

 

2. 列印二叉樹的邊界(每層最左,最右邊,葉子節點)

   層次遍歷,標記節點層數,當訪問節點的層數發生變化時候肯定就是邊界啦

   生成最左集合,最右集合,葉子集合,與頭結點,然後做個刪選排序就行啦

   時間複雜度O(n),空間複雜度,考慮最壞O(n);

 

  先序遍歷:

    遞迴的時候傳遞層數資訊,陣列標記層數是否訪問到(某層首次訪問必然是左邊界)

  反向先序遍歷,.............................................................................右邊界

  葉子節點集合

 

3. 線索二叉樹,建立索引的規則,時刻.使用線索,先序中序後序遍歷二叉樹

 

4.累加和為key的最長搜尋序列