두 갈래 찾기 트 리 가 질서 있 는 양 방향 링크 로 바 뀌 었 습 니 다.
/**
*
* :
* http://stackoverflow.com/questions/11511898/converting-a-binary-search-tree-to-doubly-linked-list#answer-11530016
* , ,root ,
* root
*/
public static TreeNode convertBST2DLLRec(TreeNode root) {
root = convertBST2DLLSubRec(root);
// root , root
while(root.left != null){
root = root.left;
}
return root;
}
/**
* BST (DLL)
*/
public static TreeNode convertBST2DLLSubRec(TreeNode root){
if(root==null || (root.left==null && root.right==null)){
return root;
}
TreeNode tmp = null;
if(root.left != null){ //
tmp = convertBST2DLLSubRec(root.left);
while(tmp.right != null){ //
tmp = tmp.right;
}
tmp.right = root; // root
root.left = tmp;
}
if(root.right != null){ //
tmp = convertBST2DLLSubRec(root.right);
while(tmp.left != null){ //
tmp = tmp.left;
}
tmp.left = root; // root
root.right = tmp;
}
return root;
}
/**
*
// * inorder traversal
*/
public static TreeNode convertBST2DLL(TreeNode root) {
if(root == null){
return null;
}
Stack stack = new Stack();
TreeNode cur = root; //
TreeNode old = null; //
TreeNode head = null; //
while( true ){
while(cur != null){ //
stack.push(cur);
cur = cur.left;
}
if(stack.isEmpty()){
break;
}
// ,
cur = stack.pop();
if(old != null){
old.right = cur;
}
if(head == null){ // /
head = cur;
}
old = cur; // old
cur = cur.right; //
}
return head;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.