題目描述
對於一棵二叉樹,請設計乙個演算法,建立含有某一深度上所有結點的鍊錶。
給定二叉樹的根結點指標treenode* root,以及鍊錶上結點的深度,請返回乙個鍊錶listnode,代表該深度上所有結點的值,請按樹上從左往右的順序鏈結,保證深度不超過樹的高度,樹上結點的值為非負整數且不超過100000。
思路解析:
輸出單層節點:層次遍歷(先序遍歷),當遍歷到第dep層時建立鍊錶
方法2思路:
要獲取指定深度的節點,只需在二叉樹的先序遍歷過程中加上深度值即可。
由於先序遍歷是先訪問左孩子、再訪問右孩子,所以某一層的左孩子一定先訪問到,右孩子一定後訪問到。
**:1、只要在先序遍歷函式上加上兩個引數即可:
2、當前深度;
目標深度 若當前深度和目標深度一致時,將當前節點輸出,並直接return回溯,無需再往下遞迴了!節約一定的開銷!
package jindian;
/* class listnode
}class treenode
}*/public
class treelevel else
return head.next;
}//方法2:在先序遍歷基礎,加上當前深度和目標深度這兩個引數,當前深度++直到等於目標深度,構建鍊錶
/*listnode head =new listnode(-1);
listnode cur= head;*/
public listnode gettreelevel(treenode root,int dep)
private
void preorder(treenode root,int curdep,int dep)
preorder(root.left,curdep+1,dep);//curdep++直到第dep層
preorder(root.right,curdep+1,dep);
}}
二叉樹單層節點組成鍊錶
題目描述 對於一棵二叉樹,請設計乙個演算法,建立含有某一深度上所有結點的鍊錶。給定二叉樹的根結點指標treenode root,以及鍊錶上結點的深度,請返回乙個鍊錶listnode,代表該深度上所有結點的值,請按樹上從左往右的順序鏈結,保證深度不超過樹的高度,樹上結點的值為非負整數且不超過10000...
二叉樹輸出其後繼節點
對於乙個二叉樹來講,其按中序遍歷,每個數後乙個數是這個數的後繼節點,那麼最後乙個數是沒有後繼節點的。根據中序遍歷的順序,乙個節點如果有右孩子,那麼右孩子最左邊的節點就是他的後繼節點,如果沒有右孩子,那麼這個節點是節點的父節點的左孩子就是其後繼節點,如果不是就繼續向上判斷,package zuoche...
二叉樹基本操作(輸出所有葉子節點到根節點的路徑)
功能 1 輸出二叉樹的所有葉子節點 2 輸出所有從葉子節點到根節點的路徑 3 輸出 2 中最長的一條路徑 日期 2015 11 28 include include typedef struct binodebinode,bitree void longestpath bitree t,char p...